hdu 2821 dfs
2013-07-21 15:27
225 查看
以前就做过~~但是不知道怎么地 一直wa,,今天重新搞了一遍~~ 一直wa~~发现 只输入过程忘了~~r c~~
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int n,m; int map[50][50]; int vis[50][50]; int xx[4]={0,1,0,-1}; int yy[4]={1,0,-1,0}; int sum; int res[10000]; int judge(int nx,int ny) { if(nx>=n||nx<0||ny<0||ny>=m) return 0; else return 1; } int dfs(int x,int y,int cur,int k) { if(cur==0) return 1; int i; for(i=0;i<4;i++) { int nx=x+xx[i]; int ny=y+yy[i]; if(!judge(nx,ny)) continue; if(map[nx][ny]!=0) continue; int flag=0; while(map[nx][ny]==0) { nx=nx+xx[i]; ny=ny+yy[i]; if(!judge(nx,ny)) { flag=1; break; } } if(flag) continue; if(!judge(nx+xx[i],ny+yy[i])) { if(map[nx][ny]>1) { continue; } else { res[k]=i; map[nx][ny]=0; if(dfs(nx,ny,cur-1,k+1)) return 1; map[nx][ny]=1; } } else { int t1=map[nx][ny]; int t2=map[nx+xx[i]][ny+yy[i]]; map[nx][ny]=0; map[nx+xx[i]][ny+yy[i]]=t1+t2-1; res[k]=i; if(dfs(nx,ny,cur-1,k+1)) return 1; map[nx][ny]=t1; map[nx+xx[i]][ny+yy[i]]=t2; } } return 0; } int main() { while(scanf("%d%d",&m,&n)!=EOF) { int i,j; char temp[50][50]; sum=0; for(i=0;i<n;i++) { scanf("%s",temp[i]); for(j=0;j<m;j++) { if(temp[i][j]=='.') map[i][j]=0; else { map[i][j]=temp[i][j]-'a'+1; sum+=map[i][j]; } } } memset(res,-1,sizeof(res)); int flag=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(map[i][j]==0) { if(dfs(i,j,sum,0)) { flag=1; break; } } } if(flag) break; } printf("%d\n%d\n",i,j); for(i=0;res[i]!=-1;i++) { if(res[i]==0) printf("R"); else if(res[i]==1) printf("D"); else if(res[i]==2) printf("L"); else printf("U"); } printf("\n"); } return 0; }
相关文章推荐
- hdu 2821 Pusher (dfs)
- hdu 2821 DFS
- hdu 2821(dfs)
- DFS-hdu-2821-Pusher
- DFS-hdu-2821-Pusher
- hdu 2821 Pusher (dfs)
- hdu 2821 学习一点dfs的小技巧吧。。 还是自己太弱了
- hdu 2821(dfs)
- hdu 2821 Pusher(dfs)
- HDU 2821 DFS
- hdu 2821 Pusher (dfs)
- hdu 2821 Pusher (dfs)
- HDU-2821-Pusher(DFS)
- HDU 2821 DFS
- HDU1044 Collect More Jewels(BFS+DFS+地图压缩)
- 【dfs】hdu 6113 度度熊的01世界
- hdu 2553 N皇后问题 (DFS)
- HDU 5325 Crazy Bobo(思路+dfs 记忆化)
- HDU-2266-How Many Equations Can You Find【交叉DFS】
- HDOJ(HDU) 2212 DFS(阶乘相关、)