hdu 5335 Walk Out (搜索)
题目链接:
题目描述:
有一个n*m由0 or 1组成的矩形,探险家要从(1,1)走到(n, m),可以向上下左右四个方向走,但是探险家就是不走寻常路,他想让他所走的路线上的0/1组成的二进数最小,现在要为矫情无比的探险家找最优路径咯。
解题思路:
对于二进制数,前导零是对数字大小没有任何影响的。当到不得不走1的时候就只能向下,或者向右走了。所以先搜索出来一直走零,能走到的最靠近终点的位置,然后在类似搜索,找出最优路径。
- #include <queue>
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int maxn = ;
- struct node
- {
- int x, y;
- };
- char maps[maxn][maxn];
- bool vis[maxn][maxn];
- int dir[][] = {,, ,, -,, ,-};
- int x, y, n, m;
- bool Ok (int x, int y)
- {
- if (x< || y< || x>=n || y>=m)
- return false;
- return true;
- }
- void bfs ()
- {
- node p, q;
- p.x = x, p.y = y;
- queue <node> Q;
- Q.push (p);
- while (!Q.empty())
- {
- p = Q.front();
- Q.pop();
- for (int i=; i<; i++)
- {
- q.x = p.x + dir[i][];
- q.y = p.y + dir[i][];
- if (Ok(q.x, q.y) && !vis[q.x][q.y])
- {
- vis[q.x][q.y] = true;
- if (maps[q.x][q.y] == '')
- Q.push (q);
- if (x + y < q.x + q.y)
- x = q.x, y = q.y;
- }
- }
- }
- }
- int main ()
- {
- int t;
- scanf ("%d", &t);
- while (t --)
- {
- memset (vis, false, sizeof(vis));
- vis[][] = true;
- scanf ("%d %d", &n, &m);
- for (int i=; i<n; i++)
- scanf ("%s", maps[i]);
- x = y = ;
- if (maps[x][y] == '')
- bfs ();
- if (maps[x][y] == '')
- putchar('');
- else
- {
- bool nowflag = false;
- putchar ('');
- for (int i=x+y; i<n+m-; i++)
- {
- bool flag = false;
- for (x=; x<=i; x++)
- {
- y = i - x;
- if (!Ok(x, y) || !vis[x][y])
- continue;
- if (nowflag && maps[x][y]=='')
- continue;
- for (int j=; j<; j++)
- {
- int a = x + dir[j][];
- int b = y + dir[j][];
- if (!Ok(a, b))
- continue;
- vis[a][b] = true;
- if (maps[a][b] == '')
- flag = true;
- }
- }
- nowflag = flag;
- putchar (flag?'':'');
- }
- }
- puts("");
- }
- return ;
- }
hdu 5335 Walk Out (搜索)的更多相关文章
- hdu 5335 Walk Out 搜索+贪心
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total S ...
- HDU 5335 Walk Out BFS 比较坑
H - H Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 2015 Multi-University Training Contest 4 hdu 5335 Walk Out
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- hdu 5335 Walk Out(bfs+斜行递推) 2015 Multi-University Training Contest 4
题意—— 一个n*m的地图,从左上角走到右下角. 这个地图是一个01串,要求我们行走的路径形成的01串最小. 注意,串中最左端的0全部可以忽略,除非是一个0串,此时输出0. 例: 3 3 001 11 ...
- HDU 5335——Walk Out——————【贪心】
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5335 Walk Out(多校)
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- hdu 5335 Walk Out (2015 Multi-University Training Contest 4)
Walk Out Time Limit: 2000/10 ...
- HDU 5335 Walk Out (BFS,技巧)
题意:有一个n*m的矩阵,每个格子中有一个数字,或为0,或为1.有个人要从(1,1)到达(n,m),要求所走过的格子中的数字按先后顺序串起来后,用二进制的判断大小方法,让这个数字最小.前缀0不需要输出 ...
- HDU 5335 Walk Out
题意:在一个只有0和1的矩阵里,从左上角走到右下角, 每次可以向四个方向走,每个路径都是一个二进制数,求所有路径中最小的二进制数. 解法:先bfs求从起点能走到离终点最近的0,那么从这个点起只向下或向 ...
随机推荐
- Semaphore使用
Semaphore使用
- VS2015 android 设计器不能可视化问题解决。
近期安装了VS2015,体验了一下android 的开发,按模板创建执行了个,试下效果非常不错.也能够可视化设计.但昨天再次打开或创建一个android程序后,设计界面直接不能显示,显示错误:(可能是 ...
- Qt移动应用开发(四):应用粒子特效
Qt移动应用开发(四):应用粒子特效 上一篇文章介绍了Qt Quick是如何对帧动画进行支持的.帧动画的实现离不开状态机.而状态机.动画和状态切换(transitions)则是Qt框架的核心内容.也就 ...
- 查看和改动MySQL数据库表存储引擎
要做一名合格的程序猿,除了把代码写的美丽外,熟知数据库方面的知识也是不可或缺的.以下总结一下怎样查看和改动MySQL数据库表存储引擎: 1.查看数据库所能支持的存储引擎: ...
- JavaScript学习14:表单处理
什么是表单? 在HTML中,表单是由<form>元素来表示的.而在JavaScript中,表单相应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLEl ...
- iOS开发——高级篇——Runloop相关一
一.什么是runLoop 1.说白了,runloop就是运行循环 2.runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程.但是,对于主线程是不能退出的,因此 ...
- asp.net listview 实现分页浏览效果
页面代码: <div style="margin-top:0px;">共<asp:Label ID="lb_count" runat=&quo ...
- HBase 数据迁移
最近两年负责 HBase,经常被问到一些问题, 本着吸引一些粉丝.普及一点HBase 知识.服务一点阅读人群的目的,就先从 HBase 日常使用写起,后续逐渐深入数据设计.集群规划.性能调优.内核源码 ...
- Java数据类型的分类
java支持的类型分为两类:基本类型和引用类型 一.基本类型 4类8种: (1)整型:int.short.long.byte. (2)浮点型:float.double. (3)字符型:char. (4 ...
- python和python3
1 安装python和python3的方法 如果是python,那么直接python setup.py install; 如果是python3,那么直接python3 setup.py install ...