标签:
希望 现在 到 暑假 做够100到搜索题!
hdu1010
#include <iostream>
#include <string.h>
using namespace std;
int vis[10][10];
char mat[10][10];
int ok,T,M,N;
void visit(int i,int j,int cur)
{
if(cur>T||ok==1) return;
else if(cur==T) {
if(mat[i][j]==‘D‘)
ok=1;
return;
}
else if(mat[i][j]==‘.‘||mat[i][j]==‘S‘){
vis[i][j]=1;
if(i+1>=0&&i+1<N&&j>=0&&j<M&&vis[i+1][j]==0) visit(i+1,j,cur+1);
if(i-1>=0&&i-1<N&&j>=0&&j<M&&vis[i-1][j]==0) visit(i-1,j,cur+1);
if(i>=0&&i<N&&j+1>=0&&j+1<M&&vis[i][j+1]==0) visit(i,j+1,cur+1);
if(i>=0&&i<N&&j-1>=0&&j-1<M&&vis[i][j-1]==0) visit(i,j-1,cur+1);
vis[i][j]=0;
}
}
int main()
{
while(cin>>N>>M>>T){
if(N==0&&M==0&&T==0)
break;
ok=0;
for(int i=0;i<=N-1;i++)
for(int j=0;j<=M-1;j++)
{
cin>>mat[i][j];
}
memset(vis,0,sizeof(vis));
int a,b;
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
if(mat[i][j]==‘S‘)
a=i,b=j;
}
}
visit(a,b,0);
if(ok==0)
cout<<"NO"<<endl;
else if(ok==1)
cout<<"YES"<<endl;
}
}
标签:
原文地址:http://www.cnblogs.com/ACWQYYY/p/4580574.html