Contest 4 1009 Walk Out【bfs】
来源:互联网 发布:警惕网络炒汇陷阱 编辑:程序博客网 时间:2024/06/06 00:08
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5335
bfs搜索。
首先尽量走0,bfs找到所有能走到的0。
如果已经可以到达终点当然不用做了。
如果不能到达,那么从0上走到离终点最近的地方,再规定只能向右、向下走找路,且尽量使踩到的值小,可得到最优。。
恩,就酱。。。
#include<iostream>#include<cstdio>using namespace std;int n,m;int a[1010][1010];int qx[1000010],qy[1000010];bool used[1010][1010];void bfs(){ int l,r,i,j,x,y,be; char ch; for(i=0;i<=n+1;i++) for(j=0;j<=m+1;j++) used[i][j]=false; l=1;r=1;used[1][1]=true; qx[1]=1;qy[1]=1; while(l<=r) { if(a[qx[l]][qy[l]]=='0') { x=qx[l];y=qy[l]; if(y+1<=m&&!used[x][y+1]) { r++;qx[r]=x;qy[r]=y+1;used[x][y+1]=true; } if(y-1>=1&&!used[x][y-1]) { r++;qx[r]=x;qy[r]=y-1;used[x][y-1]=true; } if(x+1<=n&&!used[x+1][y]) { r++;qx[r]=x+1;qy[r]=y;used[x+1][y]=true; } if(x-1>=1&&!used[x-1][y]) { r++;qx[r]=x-1;qy[r]=y;used[x-1][y]=true; } } l++; } if(a[n][m]=='0'&&used[n][m]) printf("0\n"); else { be=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(i+j>be&&used[i][j]) be=i+j; printf("1"); for(i=be;i<n+m;i++) { ch='1'; for(j=1;j<=n;j++) if(i-j>=1&&i-j<=m&&used[j][i-j]) { if(a[j+1][i-j]<ch) ch=a[j+1][i-j]; if(a[j][i-j+1]<ch) ch=a[j][i-j+1]; } printf("%c",ch); for(j=1;j<=n;j++) if(i-j>=1&&i-j<=m&&used[j][i-j]) { if(a[j+1][i-j]==ch) used[j+1][i-j]=true; if(a[j][i-j+1]==ch) used[j][i-j+1]=true; } } printf("\n"); }}int main(){ int t,i,j; char ch; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("\n"); for(j=1;j<=m;j++) scanf("%c",&a[i][j]); } for(i=1;i<=n;i++) { a[i][0]='2'; a[i][m+1]='2'; } for(i=1;i<=m;i++) { a[0][i]='2'; a[n+1][i]='2'; } bfs(); } return 0;}
0 0
- Contest 4 1009 Walk Out【bfs】
- HDU 5335 Walk Out BFS + 贪心 2015 Multi-University Training Contest 4 1009
- HDU 5335 Walk Out(BFS+BFS) 经典 2015 Multi-University Training Contest 4
- hdu 5335 Walk Out bfs 2015 Multi-University Training Contest 4 09
- hdu 5335 Walk Out (2015 Multi-University Training Contest 4)
- 2015 Multi-University Training Contest 4 -- Walk Out
- 2015 Multi-University Training Contest 4 Walk Out
- hdu 5335 Walk Out 2015 Multi-University Training Contest 4
- hdu 5335 Walk Out(dfs+bfs)
- 【HDU 5335】Walk Out(BFS)
- HDU 5335 walk out(特殊bfs)
- HDOJ 5335 Walk Out 贪心+BFS
- 【POJ】5335 - Walk Out 【BFS + 贪心】
- 5335Walk Out(贪心+bfs)
- Hdu-5335 Walk Out (BFS+贪心)
- 多校4-Walk Out
- HDU 5335 || Walk Out || 2015 Multi-University Training Contest 4 简单题
- 多校第四场 1009 hdu 5335 Walk Out(bfs+贪心)
- 时间Date的各种获取方式
- SQL server2008 身份认证模式修改密码
- LVM&RAID
- 解决virtul box 无法调大分辨率的方法
- 线程创建,属性设置与获得,等待线程结束,线程中fork,以及执行exec()
- Contest 4 1009 Walk Out【bfs】
- 利用坐标求任意多边形面积
- Linux下如何实现备份和还原
- 20150804-线程
- 变形课
- To Do List
- Map遍历的几种方法
- 删除所有的.svn 文件
- HD1047 Integer Inquiry 【大数问题】