NOJ 1541 加1乘2平方
来源:互联网 发布:淘宝网黑色平面纽扣 编辑:程序博客网 时间:2024/04/29 23:08
2016.11.3
【题目描述】
1541.加1乘2平方
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定两个正整数m、n,问只能做加1、乘2和平方这三种变化,从m变化到n最少需要几次
输入
输入两个10000以内的正整数m和n,且m小于n
输出
输出从m变化到n的最少次数
输入样例
1 16
输出样例
3
【解题思路】
BFS,从当前节点扩展状态加入队列中,直到出现目标状态
【代码实现】
# include <iostream># include <queue>using namespace std;int m, n, num;int used[100005];queue<int> q;void init(void);int bfs(void);int moveto(int ,int );int main(void){ cin >> m >> n; init(); num = bfs(); cout << num << endl; return 0;}int bfs(void){ int i, t, k; while (!q.empty()) { t = q.front(); q.pop(); for (i = 1; i <= 3; ++i) { k = moveto(t, i); if (k > n) continue; if (k == n) return used[t] + 1; if (used[k] == -1) { used[k] = used[t] + 1; q.push(k); } } }}void init(){ int i; for (i = 1; i <= 10000; ++i) used[i] = -1; q.push(m); used[m] = 0;}int moveto(int a, int b){ if (b == 1) return a * a; else if (b == 2) return a + 1; else return a * 2;}
【心得体会】
学会STL中队列的使用
0 0
- NOJ 1541 加1乘2平方
- NOJ(1541)-分支限界-加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方
- 加1乘2平方(广搜)
- 1541.加1乘2平方
- 加1乘2平方问题
- C++——加1乘2平方
- m加1乘2平方几步到n
- 悉心指点下写出的 加1乘2平方 虽然估计没多少人会看
- C语言中用队列和搜索解决"加1乘2平方问题"
- 加一,乘二,平方问题
- 求解1^2+2^2+3^2+4^2+...+n^2的方法(求解1平方加2平方加3平方...加n平方的和)
- 剑指Offer(面试题29~30)
- 对应Intel SSE的android NEON
- Java基础+思考
- ubuntu16.04上安装配置DHCP服务的详细过程
- C/C++获取大型文件的大小
- NOJ 1541 加1乘2平方
- 郝斌的C语言基础 043
- tabBarItem 选中和未选中的图片设置
- Unity入门·(二)打砖块(II)
- 深入理解Java:注解(Annotation)基本概念
- html和css月度总结
- FMDB多值查询
- Ubuntu 16.04 安装有道词典
- 内存结构