hdu 2717 Catch That Cow bfs
来源:互联网 发布:编程适合高中生吗 编辑:程序博客网 时间:2024/05/03 05:59
http://acm.hdu.edu.cn/showproblem.php?pid=2717
抓一群静止的牛,并且每次移动的方式只有x+1,x-1,2*x,主要要控制数据范围,不然漫无目的的广搜会超内存的。
参考代码:
#include <cstdio>#include <iostream>#include <queue>using namespace std;#define MAX 200001bool used[MAX];int n, k;typedef struct _node {int step;int tmp;bool operator <(const struct _node &a)const{return a.step < step;}}node;priority_queue<node >q;void bfs(){node tp, tm;while(!q.empty()){tp = q.top();q.pop();if(tp.tmp == n){printf("%d\n", tp.step);break;}used[tp.tmp] = true;tm.step = tp.step + 1;if(tp.tmp + 1 <= k * 2 && !used[tp.tmp + 1]){tm.tmp = tp.tmp + 1;q.push(tm);}if(tp.tmp - 1 >= n / 2 && !used[tp.tmp - 1]){tm.tmp = tp.tmp - 1;q.push(tm);}if(tp.tmp % 2 == 0 && tp.tmp / 2 >= n / 2 && !used[tp.tmp / 2]){tm.tmp = tp.tmp / 2;q.push(tm);}}}int main(){int i;node tm;while(scanf("%d%d", &n, &k)!=EOF){if(n > k){printf("%d\n", n - k);continue;}//memset(used, false, sizeof(used));tm.step = 0;tm.tmp = k;q.push(tm);for(i = n / 2; i <= 2 * k; i ++){used[i] = false;}bfs();while(!q.empty())q.pop();}return 0;}
- hdu 2717 Catch That Cow bfs
- hdu 2717 Catch That Cow(bfs)
- HDU 2717 Catch That Cow (BFS)
- HDU 2717--Catch That Cow【BFS】
- HDU 2717:Catch That Cow 【bfs】
- hdu-2717 Catch That Cow (BFS)
- hdu 2717 Catch That Cow(BFS)
- HDU 2717 Catch That Cow(BFS)
- HDU 2717 Catch That Cow 水题BFS
- HDU 2717 Catch That Cow [BFS]
- HDU 2717 Catch That Cow(BFS)
- HDU 2717 Catch That Cow (BFS)
- HDU 2717 Catch That Cow (BFS)
- 【HDU 2717】Catch That Cow(BFS)
- hdu 2717 Catch That Cow (BFS)
- HDU 2717 Catch That Cow【BFS】
- HDU 2717 Catch That Cow【BFS】
- 【HDU】-2717-Catch That Cow(BFS)
- <marquee>实现链接/图片的滚动
- 自写的判断ip地址的函数
- 5.2.30 把命令程序调到后台去
- Linux服务器性能评估
- 第十五届中国北京国际科技产业博览会
- hdu 2717 Catch That Cow bfs
- 通过 __doc__ 为模块目录添加注释
- network-manager与interfaces冲突
- eclipse、apache、php和xdebug集成
- 2012-04-09 C#基础学习笔记(7)
- 为什么我们实施的具体流程--测试
- 自己写的一个判断一个字符串里面数字和字母程序。 FUNCTION 'NUMERIC_CHECK'
- 5.2.37 系统关机
- acm进阶之路(转载)