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");}}
相关文章推荐
- ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)
- HDU1010(Tempter of the Bone)深搜
- hdu1010 Tempter of the Bone(DFS+剪枝)
- hdu1010(Tempter of the Bone)深搜+剪枝
- HDU1010 Tempter of the Bone
- hdu1010(Tempter of the Bone)
- HDU1010 Tempter of the Bone(回溯 + 剪枝)
- Tempter of the Bone(HDU1010)
- Tempter of the Bone 回溯法 hdu1010 zoj2110
- HDU1010 Tempter of the Bone
- hdu1010 Tempter of the Bone(dfs)
- HDU1010 Tempter of the Bone
- hdu1010 Tempter of the Bone (深搜)
- hdu1010 Tempter of the Bone
- DFS+剪枝 hdu1010 Tempter of the Bone
- ZOJ2110 HDU1010 搜索 Tempter of the Bone
- hdu1010 Tempter of the Bone(DFS)
- hdu1010 Tempter of the Bone
- hdu1010 Tempter of the Bone
- HDU1010-Tempter of the Bone(DFS+各种剪枝)