POJ 3278 && HDU 2717 Catch That Cow(bfs)
2015-07-13 10:36
423 查看
Description
给定两个整数n和k,通过 n+1或n-1或n*2 这3种操作,使得n=k,输出最少的操作次数(0≤n≤100,000)
Input
两个整数n和k
Output
输出最少操作次数
Sample Input
5 17
Sample Output
4
Solution
简单bfs
Code
给定两个整数n和k,通过 n+1或n-1或n*2 这3种操作,使得n=k,输出最少的操作次数(0≤n≤100,000)
Input
两个整数n和k
Output
输出最少操作次数
Sample Input
5 17
Sample Output
4
Solution
简单bfs
Code
#include<cstdio> #include<cstring> #include<iostream> #include<queue> using namespace std; queue<int> que; int n,k; int dis[100005]; bool vis[100005];//标记数组 int main() { scanf("%d%d",&n,&k); que.push(n);//起点入队 memset(vis,false,sizeof(vis));//初始化 memset(dis,false,sizeof(dis));//初始化 while(!que.empty()) { int x=que.front(); que.pop(); if(x==k)//到达终点 { printf("%d\n",dis[x]); break; } if(x-1>=0&&!vis[x-1])//不能超出区域 { vis[x-1]=true;//标记该点 que.push(x-1);//入队 dis[x-1]=dis[x]+1;//操作数加一 } if(x+1<=100000&&!vis[x+1])//不能超出区域 { vis[x+1]=true;//标记该点 que.push(x+1);//入队 dis[x+1]=dis[x]+1;//操作数加一 } if(2*x<=100000&&!vis[x<<1])//不能超出区域 { vis[x<<1]=true;//标记该点 que.push(x<<1);//入队 dis[x<<1]=dis[x]+1;//操作数加一 } } return 0; }
相关文章推荐
- 利用ActionFilterAttribute来判断用户是否登陆等等
- HYSBZ 1013: [JSOI2008]球形空间产生器sphere(高斯消元啊 模板)
- 快速排序
- C#静态构造函数
- linux命令学习DAY.2
- [转]Java中要注意的几个问题
- 去掉按钮默认边距(非padding)
- Android编译系统详解(二)
- linux(centos)搭建SVN服务器
- 使用RedisTemplate的操作类访问Redis(转)
- 小米公司研报:能否完成8000万台销售目标?
- 数据结构与算法——插入类排序(直接插入排序,希尔排序)
- 深入理解Java内存模型系列篇
- Object-C非正式协议与正式协议的区别
- linker command failed with exit code
- ON_WM_TIMER() void (__cdecl CtestDlg::* )(UINT)”转换为“void (__cdecl CWnd::* )(UINT_PTR)本文来自: http://ww
- RedHat 5.5 使用163yum源
- bug笔记: heap corruption detected: after normal block
- iOS 开发获取唯一标识
- Android之Button按钮点击事件的三种方式