ZOJ 2100 seeding 【DFS】
2015-08-13 10:30
169 查看
ZOJ Problem Set - 2100 Seeding Time Limit: 2 Seconds Memory Limit: 65536 KB It is spring time and farmers have to plant seeds in the field. Tom has a nice field, which is a rectangle with n * m squares. There are big stones in some of the squares. Tom has a seeding-machine. At the beginning, the machine lies in the top left corner of the field. After the machine finishes one square, Tom drives it into an adjacent square, and continues seeding. In order to protect the machine, Tom will not drive it into a square that contains stones. It is not allowed to drive the machine into a square that been seeded before, either. Tom wants to seed all the squares that do not contain stones. Is it possible? Input The first line of each test case contains two integers n and m that denote the size of the field. (1 < n, m < 7) The next n lines give the field, each of which contains m characters. 'S' is a square with stones, and '.' is a square without stones. Input is terminated with two 0's. This case is not to be processed. Output For each test case, print "YES" if Tom can make it, or "NO" otherwise. Sample Input 4 4 .S.. .S.. .... .... 4 4 .... ...S .... ...S 0 0 Sample Output YES NO |
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<queue> using namespace std; int dx[4]={0,0,-1,1}; int dy[4]={-1,1,0,0}; int n,m,sum,flag; char map[10][10]; bool check(int x,int y) { if(x<0||x>=n||y<0||y>=m) return 0; if(map[x][y]=='S') return 0; return 1; } void dfs(int x,int y) { if(sum==0) { flag=1; return ; } for(int i=0;i<4;i++) { int fx=x+dx[i]; int fy=y+dy[i]; if(check(fx,fy)) { map[fx][fy]='S'; sum--; dfs(fx,fy); sum++; map[fx][fy]='.'; } } } int main() { while(scanf("%d%d",&n,&m),n||m) { sum=n*m; flag=0; for(int i=0;i<n;i++) { scanf("%s",map[i]); for(int j=0;j<m;j++) { if(map[i][j]=='S') sum--; } } map[0][0]='S'; sum--; dfs(0,0); if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 深入解析Oracle学习笔记(第六章)
- 关于Linux 网络编程bind()和connect()的理解
- Sum It Up POJ 1564 HDU 杭电1258【DFS】
- [WinForm]DataGridView列头右键菜单
- SaltStack Syndic配置
- 系统默认Select框 知多少
- WKWebView的新特性与使用
- TypeScript入门
- 8月9日28家中国域名商六类国际域名注册保有量统计
- jquery操作<select>标签大全
- js自执行函数
- 网络编程复习_Exp1
- MongoDB中的固定集合
- Nginx性能优化
- mac上安装MySQL
- 想看的书籍记录
- html,子页面向父页面传递参数
- Socket监听 /TcpListener监听/HttpListener 监听
- js自执行函数
- hdu 2594 Simpsons’ Hidden Talents(KMP入门)