标签:
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
1 #include<cstdio> 2 using namespace std; 3 4 bool flag; 5 int m,n; 6 char map[10][10]; 7 int d[4][2]={1,0,0,1,-1,0,0,-1}; 8 9 void dfs(int x,int y) 10 { 11 if(flag)return; 12 if(x<0||x>=m||y<0||y>=n||map[x][y]==‘S‘) 13 { 14 for(int i=0;i<m;i++) 15 for(int j=0;j<n;j++) 16 if(map[i][j]==‘.‘) 17 return; 18 flag=true; 19 return; 20 } 21 map[x][y]=‘S‘; 22 for(int i=0;i<4;i++) 23 { 24 int xx=x+d[i][0]; 25 int yy=y+d[i][1]; 26 dfs(xx,yy); 27 } 28 map[x][y]=‘.‘; 29 } 30 31 int main() 32 { 33 int i,j; 34 while(scanf("%d%d",&m,&n),m|n) 35 { 36 for(i=0;i<m;i++) 37 scanf("%s",map[i]); 38 flag=false; 39 dfs(0,0); 40 if(flag) 41 printf("YES\n"); 42 else 43 printf("NO\n"); 44 } 45 }
标签:
原文地址:http://www.cnblogs.com/homura/p/4703515.html