码迷,mamicode.com
首页 > 其他好文 > 详细

【递归入门】走迷宫-DFS

时间:2020-04-12 08:30:38      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:===   dfs   flag   mes   problem   pre   nbsp   php   递归   

  题目链接:http://codeup.cn/problem.php?cid=100000608&pid=5

===

这题 初始点标记访问那块一开始弄反了一直提示输出超限,艹坑了我好久啊啊!


 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int m,n;//m行n列的迷宫
 4 int start_x,start_y,end_x,end_y;
 5 int map_[20][20]={0};
 6 int flag=0;
 7 bool visit[20][20]={false};
 8 int nexto[4][2]={{0,-1},{-1,0},{0,1},{1,0}};//左上右下
 9 struct Point{
10     int x;
11     int y;
12     Point(int c,int d):x(c),y(d){}
13 };
14 vector<Point>my;
15 void DFS(int x,int y){
16     int tx=0,ty=0;
17     if(x==end_x&&y==end_y){
18             flag=1;
19         for(int i=0;i<my.size()-1;i++){
20             printf("(%d,%d)->",my[i].x,my[i].y);//!不用加 &符号
21         }
22         printf("(%d,%d)\n",my[my.size()-1].x,my[my.size()-1].y);
23         return;
24     }
25     for(int i=0;i<4;i++){
26         tx=x+nexto[i][0];
27         ty=y+nexto[i][1];//下一步方向
28         if(tx<1||ty<1||tx>m||ty>n||visit[tx][ty]==true) continue;//剪枝
29         if(visit[tx][ty]==false&&map_[tx][ty]==1){
30             my.push_back(Point(tx,ty));
31             visit[tx][ty]=true;
32             DFS(tx,ty);
33             visit[tx][ty]=false;
34             my.pop_back();//回溯
35         }
36     }
37 }
38 int main(){
39     while(scanf("%d %d",&m,&n)!=EOF){
40         flag=0;
41         my.clear();
42         memset(map_,0,sizeof(map_));
43         memset(visit,false,sizeof(visit));
44         for(int i=1;i<=m;i++){
45             for(int j=1;j<=n;j++){
46                 scanf("%d",&map_[i][j]);//初始化迷宫
47             }
48         }
49         scanf("%d %d",&start_x,&start_y);
50         //压入初始点
51         my.push_back(Point(start_x,start_y));
52         scanf("%d %d",&end_x,&end_y);
53         visit[start_x][start_y]=true;//就是这里!!一开始我赋值是false 一直提示输出超限,,,我还寻思我这输入输出有问题??淦- -
54         DFS(start_x,start_y);
55         if(flag==0) printf("-1\n");
56     }
57     return 0;
58 }

 

【递归入门】走迷宫-DFS

标签:===   dfs   flag   mes   problem   pre   nbsp   php   递归   

原文地址:https://www.cnblogs.com/YanShaoDian/p/12683353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!