HDOJ 2064 汉诺塔III
来源:互联网 发布:手机淘宝如何升级版本 编辑:程序博客网 时间:2024/05/22 07:41
题意:有n个盘子,三根柱子的汉诺塔,每次只能将一个盘子移动到相邻的柱子上,求要几次操作才能将n个盘子从第一根柱子移动到第三根柱子上。
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064
思路:每次要将n-1个盘子从柱1->柱3,最大的盘子柱1->柱2,再讲n-1个盘子从柱3->柱1,在将最大的盘子从柱2->柱3,最后将n-1个盘子从柱1->柱3,因此需要的操作为f(n)=3*f(n-1)+2. f(0)=0
注意点:超出int范围,用long long
以下为AC代码:
Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor126582732015-01-07 06:20:56Accepted20640MS1212K922 BG++luminous11#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <vector>#include <deque>#include <list>#include <cctype>#include <algorithm>#include <climits>#include <queue>#include <stack>#include <cmath>#include <map>#include <set>#include <iomanip>#include <cstdlib>#include <ctime>#define ll long long#define ull unsigned long long#define all(x) (x).begin(), (x).end()#define clr(a, v) memset( a , v , sizeof(a) )#define pb push_back#define mp make_pair#define read(f) freopen(f, "r", stdin)#define write(f) freopen(f, "w", stdout)using namespace std;const double pi = acos(-1);int main(){ ios::sync_with_stdio( false ); ll num[40] = { 0, 2, 8, 26}; for ( int i = 4; i < 40; i ++ ) num[i] = 3 * num[i-1] + 2; int n; while ( cin >> n ) { cout << num[n] << endl; } return 0;}
0 0
- HDOJ 2064 汉诺塔III
- hdoj 2064 汉诺塔III
- hdoj 2064 汉诺塔III
- HDOJ 2064 汉诺塔III
- HDOJ.2064 汉诺塔III
- hdoj.2064 汉诺塔III 20140808
- ACM HDOJ 汉诺塔III
- [汉诺塔][第二阶段-汉诺塔入门][HDOJ-2064]汉诺塔III
- (Java实现)HDOJ 2064 汉诺塔III && 2077 汉诺塔IV
- 递归及递推系列之 汉诺塔III hdoj 2064
- hdu 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- hdu 2064 汉诺塔III
- hd 2064 汉诺塔III
- HDU 2064 汉诺塔III
- 二哥大发光火发国际化各环节各环节更好个
- c#调用excel的打印预览页
- 的施工方地方郭德纲好改价格发给的法国队
- 新浪微博数据挖掘食谱之十一: 用户篇 (批量获取用户信息)
- Apache之.htaccess备忘录(一)
- HDOJ 2064 汉诺塔III
- 你喜欢嘎哦跟小的
- Leetcode-Longest Palindromic Substring
- Microsoft Paint in OpenCV
- 关于逻辑坐标,设备坐标。分辨率变了之后,窗口如何布局
- SPRING DATA JPA 中几种缓存的配置
- qemu-kvm virtio 虚拟化-----Linux客户机 virtio设备初始化
- 【BZOJ】【P1293】【SCOI2009】【生日礼物】【题解】【水题】
- 2015,我和你的美国梦