您的位置:首页 > 其它

hdu1010 Tempter of the Bone

2013-08-04 16:09 393 查看

Tempter of the Bone

#include<stdio.h>#include<math.h>#include<stdlib.h>char s[104][104];int n,m,k;int sx,sy;int di,dj,wall=0;struct tv{int x;int y;int number;} T[10010];int bfs(int num,int sx,int sy){tv a,a1;int xx,yy,g=0,h=0;char div[4][2]= {1,0,0,-1,-1,0,0,1};//四个方向;a.x=sx;a.y=sy;a.number=0;T[g]=a;g++;if((num==k)&&(sx==di)&&(sy==dj))return 1;if(num>=k)return 0;if(k-num-abs(di-sx)-abs(dj-sy)<0)return 0;if((k-num-abs(di-sx)-abs(dj-sy))%2!=0)return 0;for(int i=0; i<4; i++){xx=sx+div[i][0];//向左右移动yy=sy+div[i][1];//相上下移动if(xx>=0&&xx<n&&yy>=0&&yy<m&&s[xx][yy]!='X'){s[xx][yy]='X';if(bfs(num+1,xx,yy))return 1;s[xx][yy]='.';}}return 0;}int main(){while(scanf("%d%d%d",&n,&m,&k)!=EOF){if(m==0&&n==0&&k==0)break;for(int i=0; i<n; i++){scanf("%s",s[i]);for(int j=0; j<m; j++){if(s[i][j]=='S'){sx=i;sy=j;s[i][j]='X';}else if (s[i][j]=='D'){di=i,dj=j;}}getchar();}int t=bfs(0,sx,sy);if(t==0)printf("NO\n");elseprintf("YES\n");}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: