hdu1010 Tempter of the Bone
2011-07-26 10:40
288 查看
题目:hdu1010 tzc1221
方法:dfs
思想:由于本题中规定只有在固定时刻到达目的点才能逃脱,
不能提早,更不能延迟,故不能用bfs。可以用dfs找出所有情况,
若有可行解,直接返回即可。本题比较郁闷的是,在tzc上将方向
数组int dir[4][2]稍微变动两下,就会超时。这也是今后出现TLE时
该考虑的重要的一点吧,可以作为经验教训。
代码:
方法:dfs
思想:由于本题中规定只有在固定时刻到达目的点才能逃脱,
不能提早,更不能延迟,故不能用bfs。可以用dfs找出所有情况,
若有可行解,直接返回即可。本题比较郁闷的是,在tzc上将方向
数组int dir[4][2]稍微变动两下,就会超时。这也是今后出现TLE时
该考虑的重要的一点吧,可以作为经验教训。
代码:
#include <iostream> #include <stdlib.h> using namespace std; char map[10][10]; int n,m,t; int dx,dy; bool flag; //int dir[4][2]={-1,0,0,-1,1,0,0,1}; //本题用上面的数组超时,下面的数组AC,在今后 //遇到相似问题,应该考虑改动遍历方向数组。 int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}}; void dfs(int i,int j,int step) { if(i==dx&&j==dy&&step==t)flag=true; if(step>t)return; if(flag)return;//如果找到符合题意的就返回 if((t-step)%2!=(abs(dx-i)+abs(dy-j))%2)return;//如果奇偶性不同就返回 for(int u=0;u<4;u++) { int x=i+dir[u][0]; int y=j+dir[u][1]; if(x>=0&&x<n&&y>=0&&y<m) { if(map[x][y]!='X') { map[x][y]='X'; dfs(x,y,step+1); map[x][y]='.'; } } } } int main(int argc, char *argv[]) { //freopen("hdu1010in.txt","r",stdin); while(cin>>n>>m>>t) { if(n==0&&m==0&&t==0)break; int i,j,k=0; int x,y; for(i=0;i<n;i++) for(j=0;j<m;j++) { cin>>map[i][j]; if(map[i][j]=='S'){x=i,y=j;map[i][j]='X';} else if(map[i][j]=='D'){dx=i,dy=j;k++;} else if(map[i][j]=='.')k++; } if(k<t){printf("NO\n");continue;} flag=false; dfs(x,y,0); if(flag)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
相关文章推荐
- 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 (搜索+剪枝)
- HDU1010_Tempter of the Bone(DFS+奇偶剪枝+回溯)
- HDU1010 Tempter of the Bone【小狗是否能逃生----DFS奇偶剪枝(t时刻恰好到达)】
- Tempter of the Bone(hdu1010,dfs)
- HDU1010 Tempter of the Bone(搜索,dfs)
- 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
- HDU1010:Tempter of the Bone
- hdu1010---Tempter of the Bone
- hdu1010 Tempter of the Bone
- hdu1010 Tempter of the Bone
- [HDU1010] Tempter of the Bone