博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 2110 dfs+步长
阅读量:5806 次
发布时间:2019-06-18

本文共 1622 字,大约阅读时间需要 5 分钟。

dfs搜索。

搜索位置=D,而且步长=T, return, 可以逃出,输出“YES”。否则,不能逃出,输出“NO”。

1 #include
2 #include
3 #include
4 #include
5 #define N 9 6 using namespace std; 7 char map[N][N]; 8 int flag[N][N]; 9 int m,n,t;10 int Si,Sj;11 int Di,Dj;12 bool escape;13 int dir[4][2]={
{-1,0},{
0,1},{
1,0},{
0,-1}} ; // 方向是上右下左的顺时针14 void dfs(int x,int y,int cnt)15 {16 int xx,yy,i;17 if( x==Di && y== Dj && cnt==t)18 {19 escape=1;20 return ;21 }22 for(i=0;i<4;i++)23 {24 xx=x+dir[i][0];25 yy=y+dir[i][1];26 if(xx<0 || xx>=m ||yy<0 || yy>=n) continue;27 if(!flag[xx][yy])28 {29 flag[xx][yy]=1;30 dfs(xx,yy,cnt+1);31 if(escape) return ;32 flag[xx][yy]=0;33 34 }35 }36 return ;37 }38 int main()39 {40 while(cin>>m>>n>>t && m && n && t)41 {42 int i,j;43 escape=0;44 for(i=0;i
>map[i][j];49 if(map[i][j]=='S')50 {51 Si=i, Sj=j;52 }53 else if(map[i][j] == 'D')54 {55 Di=i, Dj=j;56 flag[i][j]=0;57 }58 59 else if(map[i][j] == '.')60 flag[i][j]=0;61 else62 flag[i][j]=1;63 }64 }65 flag[Si][Sj]=1;66 dfs(Si,Sj,0);67 if(escape) cout<<"YES"<

 

转载于:https://www.cnblogs.com/zn505119020/p/3574195.html

你可能感兴趣的文章
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
li下的ul----多级列表
查看>>
UVa 11292 勇者斗恶龙(The Dragon of Loowater)
查看>>
STL 算法
查看>>
分享:Backbone.js 样例站点与入门指南
查看>>
网页图片缩放(js)
查看>>
白话算法(7) 生成全排列的几种思路(二) 康托展开
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
【ES6】数值的扩展
查看>>
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>