POJ 3278 Catch That Cow
2016-03-19 11:06
435 查看
给出两个数字 和三种操作分别是加一减一和乘2,问第一个数变成第二个书的最小操作数
#include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<string.h> #include<cstring> #include<string> #include<map> #include<set> #include<vector> #include<queue> using namespace std; typedef long long ll; int ans[120]; #define sp system("pause") #define mt(dp) memset(dp,0,sizeof dp) struct Node { int loc; int step; }; int n,k; queue<Node> q; bool vis[202000]; void bfs() { Node node; node.loc = n; node.step = 0; vis = 1; q.push(node); while(!q.empty()) { Node temp; node = q.front(); q.pop(); if(node.loc == k) { cout<<node.step<<endl; return ; } if(node.loc - 1 >= 0 && vis[node.loc - 1] == false) { vis[node.loc - 1] = true; temp.loc = node.loc - 1; temp.step = node.step + 1; q.push(temp); } if(node.loc + 1 <= k && vis[node.loc + 1] == false) { vis[node.loc + 1] = true; temp.loc = node.loc + 1; temp.step = node.step + 1; q.push(temp); } if(node.loc * 2 <=200000 && vis[node.loc * 2] == false) { vis[node.loc * 2] = true; temp.loc = node.loc * 2; temp.step = node.step + 1; q.push(temp); } } } int main() { while(cin>>n>>k) { memset(vis,0,sizeof(vis)); while(!q.empty()) q.pop(); bfs(); } return 0; }
相关文章推荐
- Apache和tomcat之间的区别和联系
- 编译hadoop-2.2.0时缺少3个文件的处理方式
- 搭建Ubuntu下c/c++编译环境【转】
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- aparch ab命令
- Codeforces--618C--Constellation(数学几何)(技巧)
- CentOS 7下autojump无法使用的可能原因
- 数位DP专题
- POJ 2488 A Knight's Journey(DFS)
- c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)
- 三层架构中使用实体类填充泛型集合代替DataTable解决方案(ASP.NET+C#)
- 自定义排序函数
- Sublime text3 安装
- 图像操作小结
- React-Native schema跳转
- 宋仲基太阳的后裔头像 撩到你了吗
- 六大排序算法c++实现
- 第4周-项目1-求最大公约数(1)
- 2016年3月19日:如何让一个单网页自适应手机
- 设计模式之单例模式