hdu1010-dfs回溯
来源:互联网 发布:王牌对王牌网络直播 编辑:程序博客网 时间:2024/04/30 10:09
回溯回溯回溯回溯回溯回溯回溯
hdu1010
#include<stdio.h>#include<string.h>int abs(int x){return x<0? -1*x:x;}int m,n,T,mp[10][10],Sx,Sy,Dx,Dy,flag,dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};void dfs(int x,int y,int t){int i,temp;if(x==Dx&&y==Dy&&t==T){flag=1;return;}if( x<1||x>m||y<1||y>n )return;temp=T-t-abs(x-Dx)-abs(y-Dy);if( temp<0 || temp%2!=0) return;for(i=0;i<4;i++){if(x+dir[i][0]>=1&&x+dir[i][0]<=m&&y+dir[i][1]>=1&&y+dir[i][1]<=n)if(mp[x+dir[i][0]][y+dir[i][1]]!='X'){mp[x+dir[i][0]][y+dir[i][1]]='X';dfs(x+dir[i][0],y+dir[i][1],t+1);if(flag)return;mp[x+dir[i][0]][y+dir[i][1]]='.';}}}int main(){int i,j,nX;while(scanf("%d%d%d",&m,&n,&T),m+n+T){getchar();for(nX=0,i=1;i<=m;i++){for(j=1;j<=n;j++){mp[i][j]=getchar();if(mp[i][j]=='S') Sx=i,Sy=j;elseif(mp[i][j]=='D') Dx=i,Dy=j;elseif(mp[i][j]=='X') ++nX;}getchar();}if( m*n-nX-1<T ){printf("NO\n");continue;}else{mp[Sx][Sy]='X';flag=0;dfs(Sx,Sy,0);if(flag)printf("YES\n");elseprintf("NO\n");}}return 0;}
- hdu1010-dfs回溯
- hdu1010 Tempter of the Bone(DFS,剪枝,递归,回溯)
- hdu1010 dfs
- DFS HDU1010
- HDU1010(回溯剪枝)
- HDU1010 关于DFS
- hdu1010 DFS和剪枝
- HDU1010第一道DFS
- HDU1010-奇偶剪枝(DFS)
- hdu1010 dfs+路径剪枝
- hdu1010(dfs+剪枝)
- hdu1010 dfs奇偶剪枝
- HDU1010奇偶剪枝DFS
- hdu1010 dfs+剪枝
- HDU1010 DFS+奇偶剪枝
- DFS—HDU1010
- dfs+剪枝(hdu1010)
- hdu1010 dfs+剪枝
- 学计算机的值得一看的文章
- Make The Change (你必须非常努力,才能看起来毫不费力)
- hdu 1117 免费馅饼
- Struts2 OGNL语言、stack、valueStack关系及使用总结
- Linux使用中的几个小技巧
- hdu1010-dfs回溯
- Python中的包安装工具easy_install
- 暑假ASP.NET学习笔记——7月24号
- 暑假ASP.NET学习笔记——7月25号
- 暑假ASP.NET学习笔记——7月17号
- jsp内置对象及用途
- 范式的一些理解
- 暑假ASP.NET学习笔记——7月27号
- 学位论文中章标题与图表题注自动编号的新技巧