博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2717 Catch That Cow (BFS)
阅读量:6254 次
发布时间:2019-06-22

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


链接 :

思路 : 很简单, 就是一个简单的状态搜索, 对于中间的任意状态 $number$ , 它都有三种转移方式 : 1.$(number - 1)$, 2.$(number + 1)$, 3.$(number * 2)$, 所以直接 $BFS$ 就好了, 需要注意的是判断一下最大值是否已经超出 $MAX_N$ 了, 否则容易数组越界......, 而且在 $Vjudge$ 上好像不支持 "{}" 构造......


/*************************************************************************    > File Name: E.cpp    > Author:     > Mail:     > Created Time: 2017年11月26日 星期日 10时51分05秒 ************************************************************************/#include 
#include
#include
#include
#include
using namespace std;#define MAX_N 2000010int N, K;int vis[MAX_N];struct Point { Point(int ind, int step) : ind(ind), step(step){} int ind, step;};bool check(Point pt) { if (pt.ind < 0 || pt.ind >= MAX_N) return false; if (vis[pt.ind]) return false; return true;}int BFS() { vis[N] = 1; queue
que; que.push(Point{N, 0}); while (!que.empty()) { Point now = que.front(); que.pop(); if (now.ind == K) { return now.step; } // 看起来并不支持{}构造 // case 1: Point temp1(Point(now.ind - 1, now.step + 1)); if (check(temp1)) { que.push(temp1); vis[temp1.ind] = 1; } // case 2: Point temp2(Point(now.ind + 1, now.step + 1)); if (check(temp2)) { que.push(temp2); vis[temp2.ind] = 1; } // case 3: Point temp3(Point(now.ind * 2, now.step + 1)); if (check(temp3)) { que.push(temp3); vis[temp3.ind] = 1; } } return -1;}void solve() { memset(vis, 0, sizeof(vis)); int ret = BFS(); printf("%d\n", ret);}int main() { while (scanf("%d%d", &N, &K) != EOF) { solve(); } return 0;}

转载于:https://www.cnblogs.com/WArobot/p/7902820.html

你可能感兴趣的文章
乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
查看>>
Windows脚本初探之PowerShell变量和常量
查看>>
用Python简单处理SQL语句绕过防注入
查看>>
PHP中的$this和$that指针使用案例
查看>>
CentOS5.8 x86_64系统手动释放内存
查看>>
登陆木星,踏出你的一小步,成就未来一大步
查看>>
都是trigger惹的祸
查看>>
初识Scrapy,在充满爬虫的世界里做一个好公民
查看>>
基于Exchange Server Web Service开发协作、应用平台
查看>>
Oracle11g新特性注意事项
查看>>
Cacti+Nagios监控平台完美整合
查看>>
披星“戴”云,百治百效
查看>>
内存真实利用率
查看>>
由bean,及O/R映射文件导出数据库的方法ExportDB()
查看>>
利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件...
查看>>
python httplib post 进行表单提交数据
查看>>
2003加入域提示“用户已存在”
查看>>
Druid.io索引过程分析——时间窗,列存储,LSM树,充分利用内存,concise压缩
查看>>
Win2008 R2 VDI动手实验系列之四:远程桌面连接代理配置
查看>>
IT人的自我导向型学习:学习的4个层次
查看>>