图论 DFS HDU 1010
2016-08-10 15:26
369 查看
#include <iostream> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #include <iterator> #include <list> #include <stack> #include <math.h> using namespace std; int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; char a[10][10]; int n,m,t; int sx,sy; int ex,ey; int flag; void dfs(int sx,int sy,int time) { int temp; int tx,ty; if(sx<1 || sx>n || sy<1 || sy>m) return; if(sx == ex && sy==ey &&time == t)flag=1; if(flag==1)return; temp = t - time - abs(sx - ex) - abs(sy - ey); if(temp < 0 || temp %2) return; for(int i=0;i<4;i++) { tx=sx+d[i][0]; ty=sy+d[i][1]; if(a[tx][ty] != 'X') { a[tx][ty] = 'X'; dfs(tx,ty,time+1); a[tx][ty]='.'; } } } int main() { int i,j; while(cin>>n>>m>>t && (n!=0 || m!=0)) { getchar(); flag=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>a[i][j]; if(a[i][j] == 'S') { sx=i;sy=j;continue; } if(a[i][j] == 'D') { ex=i;ey=j;continue; } } a[sx][sy]='X'; dfs(sx,sy,0); if(flag==1)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
相关文章推荐
- IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding
- 深入剖析iLBC的丢包补偿技术(PLC)
- keytool 错误:java.to.FileNotFoundException:
- JsonResult序列化并保存json文件 以及对json文件读取反序列
- Android Studio 调试技巧大全
- 自定义数字密码EditText输入框
- jquery插件之倒计时-团购秒杀
- socket常用数据结构
- shell expect 教程
- Android自学笔记(五)Android开发的兼容性
- linux主机上打开流慢
- 网络编程Socket
- 338. Counting Bits **
- 学习路线
- 对于iOS的编码和解码
- spring整合redis客户端及缓存接口设计
- javascript 跟 强类型语言不同的特性
- 面向对象分析
- 微信接入
- 言简意赅的TIME_WAIT