博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3278 Catch That Cow - BFS入门
阅读量:5266 次
发布时间:2019-06-14

本文共 1445 字,大约阅读时间需要 4 分钟。

分析:

  BFS入门。搜索的门,我大概是被卡住了吧

    人抓牛,可以从任意点X移动到X -1 / X + 1 / X * 2点,耗时均为1分钟。问人抓到牛的最短时间。

看了好些个博客, 这个的讲解很容易懂,但是是c语言版,c++可以直接用到queue模板库的队列。比较好操作。另:开一个vis数组,标记走过的点,防止无限的往下找,保证每个元素不相等。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 const int maxn = 100005; 7 8 int vis[maxn]; 9 int cnt;10 void bfs(int n, int k)11 {12 queue
Q;13 Q.push(n);14 Q.push(cnt);15 vis[n] = 1;16 17 while(!Q.empty()){18 n = Q.front();19 Q.pop();20 cnt = Q.front();21 Q.pop();22 23 if(n == k) return;24 if(n-1 >= 0 && !vis[n-1]){25 Q.push(n-1);26 Q.push(cnt+1);27 vis[n-1] = 1;28 }29 if(n+1 < maxn && !vis[n+1]){30 Q.push(n+1);31 Q.push(cnt+1);32 vis[n+1] = 1; 33 }34 if(n*2 < maxn && !vis[n*2]){35 Q.push(n*2);36 Q.push(cnt+1);37 vis[n*2] = 1;38 }39 }40 }41 int main()42 {43 int n, k;44 while(cin >> n >> k){45 if(n >= k){46 cout << n - k << endl;47 continue;48 }49 cnt = 0;50 memset(vis,0,sizeof(vis));51 bfs(n, k);52 cout << cnt << endl;53 }54 return 0;55 }

 

 

转载于:https://www.cnblogs.com/JiaaaaKe/p/9512645.html

你可能感兴趣的文章
RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
查看>>
Python日期计算
查看>>
用css3绘制你需要的几何图形
查看>>
对其他团队的项目的意见或建议
查看>>
iOS 项目的编译速度提高
查看>>
机房收费系统——报表
查看>>
How to unshelve many shelves at same time
查看>>
table中checkbox选择多行
查看>>
动态链接库
查看>>
Magento开发文档(三):Magento控制器
查看>>
使用Docker官方的Django包【转】
查看>>
SuperSocket 学习
查看>>
给培训学校讲解ORM框架的课件
查看>>
此实现不是 Windows 平台 FIPS 验证的加密算法的一部分
查看>>
性能调优攻略
查看>>
线段树模板讲解
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
H3C交换机DHCP&nbsp;Server配置的六个方面
查看>>
docker overlay网络实现
查看>>