ZOJ2100-Seeding(dfs基础题)

来源:互联网 发布:java中flag的用法 编辑:程序博客网 时间:2024/05/17 03:37

http://acm.zju.edu.cn/onlinejudge/

#include<iostream>using namespace std;#define MAX 7char map[MAX][MAX];int visited,count,m,n,flag;void dfs(int x,int y){if(x<0||x>=n||y<0||y>=m)return ;if(map[x][y]=='S')return ;if(flag)return ;count++;if(count>1500)return ;visited++;if(visited==m*n){flag=1;return ;}map[x][y]='S';dfs(x+1,y);dfs(x-1,y);dfs(x,y+1);dfs(x,y-1);visited--;map[x][y]='.';}int main(){while(cin>>n>>m&&(m||n)){visited=0;for(int i=0;i<n;i++)    for(int j=0;j<m;j++)    {    cin>>map[i][j];    if(map[i][j]=='S')    visited++;}flag=0;count=0;dfs(0,0);if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}

showProblem.do?problemId=1100点击打开链接

0 0
原创粉丝点击