http://acm.hdu.edu.cn/showproblem.php?pid=1010 我错了好几次,由于不懂奇偶标记法; 还有就是我敲代码失误太多; #includestdio.h #includestdlib.h #includestring.h #includemath.h #includealgorithm #includeiostream u
http://acm.hdu.edu.cn/showproblem.php?pid=1010
我错了好几次,由于不懂奇偶标记法;
还有就是我敲代码失误太多;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;
bool flag;
int Ex,Ey;
int a[4][2]={0,1,0,-1,1,0,-1,0};
bool Map[25][25];
void DFS(int x,int y,int t)
{
if(flag)
return;
if(t==0&&x==Ex&&y==Ey)
{
flag=true;
return;
}
int bx,by,s;
s=t-abs(Ex-x)-abs(Ey-y);
if(s<0||s&1)
return;
int i;
for(i=0;i<4;i++)
{
bx=x+a[i][0];
by=y+a[i][1];
if(Map[bx][by])
{
Map[bx][by]=false;
DFS(bx,by,t-1);
Map[bx][by]=true;
}
}
}
int main()
{
int m,n,T;
int i,j;
char c;
int x,y;
while(scanf("%d%d%d",&m,&n,&T),(m+n+T))
{
flag=false;
memset(Map,false,sizeof(Map));
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
cin>>c;
if(c=='S')
{
x=i;
y=j;
}
if(c=='D')
{
Ex=i;
Ey=j;
Map[i][j]=true;
}
if(c=='.')
Map[i][j]=true;
}
DFS(x,y,T);
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}