zoj 2100 Seeding
2015-08-05 09:29
148 查看
DFS深搜,首先将有石头的地方标记为1,从最左端开始搜索,搜索时将此地标记为1,然后判断可走的地方是否全部
走过,若不是,则看此处四个方向是否还可走,若否,则此处不可走,取消此处标记,AC代码:
走过,若不是,则看此处四个方向是否还可走,若否,则此处不可走,取消此处标记,AC代码:
#include<stdio.h> #include<string.h> int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; int mark[10][10]; char squ[10][10]; int n,m,flag; int jud() { for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(!mark[i][j]) return 0; return 1; } void dfs(int x,int y) { mark[x][y]=1; if(jud()) { flag=1; return ; } else { for(int i=0;i<4;i++) { int fx=x+dx[i]; int fy=y+dy[i]; if(!mark[fx][fy]&&fx>=1&&fx<=n&&fy>=1&&fy<=m) dfs(fx,fy); } if(!flag) mark[x][y]=0; } } int main() { while(scanf("%d%d",&n,&m)!=EOF&&(n|m)) { flag=0; memset(mark,0,sizeof(mark)); for(int i=1;i<=n;i++) { getchar(); for(int j=1;j<=m;j++) { scanf("%c",&squ[i][j]); if(squ[i][j]=='S') { mark[i][j]=1; } } } dfs(1,1); if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- HBase与MapReduce集成2-Hdfs2HBase
- WSDL1.1学习笔记
- wxPython--Python GUI编程参考链接
- LAMP自动安装脚本第三版
- 只会左键断点?是时候试试这样那样断点了
- VS2013编译安装VTK-6.2.0_支持Qt5.4.2
- 集合类型图
- 倾情大奉送--Spark入门实战系列
- 6、Concurrent-Mark-Sweep
- SURF算法
- C++中的单例模式
- 大数据的机遇与挑战:清华、复旦、中科院、春雨移动及考拉征信专家的观点
- Android4.0 Launcher拖拽原理分析
- ctime、mtime、atime
- 在安卓开发中实现退出App时销毁所有Activity
- FPGA+DSP视频监控
- Mac环境Sublime text2解决中文乱码的问题
- JavaScript实现删除,移动和复制文件的方法
- POJ 2594 Treasure Exploration【最小路径覆盖+缩点】
- DSP、CAN、USB、以太网系统