您的位置:首页 > 其它

poj1573(简单的dfs)

2011-08-18 09:23 399 查看
                                                                                                             
                 题目:http://poj.org/problem?id=1573
代码:
#include<stdio.h>
char gird[11][11];
int n,m,k,flag,flag1,num,num1;
void dfs(int row,int col)
{

if(row<0||row==n||col<0||col==m)
{
flag=1;
return;
}
if(gird[row][col]==1)
{
flag=0;
gird[row][col]=0;
return ;
}
num++;
if(gird[row][col]-'N'==0){gird[row][col]=1;dfs(row-1,col);}
else if(gird[row][col]-'S'==0) {gird[row][col]=1;dfs(row+1,col);}
else if(gird[row][col]-'E'==0){gird[row][col]=1;dfs(row,col+1);}
else if(gird[row][col]-'W'==0){gird[row][col]=1;dfs(row,col-1);}
if(gird[row][col]==0)flag1=1;
if(flag1) num1++;
return;
}
void main()
{
while((scanf("%d%d%d",&n,&m,&k)!=EOF)&&(n!=0&&m!=0&&k!=0))
{
int i;
for(i=0;i<n;i++)
scanf("%s",gird[i]);
num=0;
num1=0;
flag1=0;
dfs(0,k-1);
if(flag)
printf("%d step(s) to exit\n",num);
else
printf("%d step(s) before a loop of %d step(s)\n",num1-1,num-num1+1);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini