HDU 2077(dp)
来源:互联网 发布:ubuntu cpu 降频 编辑:程序博客网 时间:2024/05/04 06:51
//题意:中文题就不说了//方法:求dp[n](n块盘子需要多少步从最左边移到最右边)// 1. 将上面的n-1块圆盘先从最左边移到中间 .......................需要a步// 2. 第n块(最大的)盘子直接通过中间放在最右边 ...........需要2步// 3. 再将n-1块圆盘从中间移到右边.........................................需要a步// dp[n] = 2 * a + 2;// 还需要求a (即将n块盘子按照正常的汉诺塔规则从左边移到中间所需要的步数)// 那么前n-1块必须像正常的汉诺塔一样移动. 且n-1块从两边的柱子移到中间的柱子和从中间的柱子移到两边所需要的步数都是一样的// 我们很容易的推出 a[n] = 3 * a[n] + 1;// 那么这样dp[n] 就可以推出来了#include <iostream>#include "stdio.h"#include "stdlib.h"#include "string.h"#include "algorithm"#include <queue>#include <stack>#include <math.h>using namespace std;long long int a[105];int main(){ int t, n; scanf("%d", &t); a[1] = 1;a[0] = 0; for(int i = 2; i <= 21; i++) a[i] = 3 * a[i - 1] + 1; while(t--) { scanf("%d", &n); printf("%lld\n", (a[n - 1] << 1) + 2); } return 0;}
0 0
- HDU 2077(dp)
- HDU DP
- DP? HDU
- DP? HDU
- DP? HDU
- 【dp】HDU
- 【dp】HDU
- 【dp】 HDU
- DP? HDU
- 【DP】HDU-1207 2064 2077 汉诺塔专题
- hdu 2077 汉诺塔IV(推公式+dp)
- HDU 1003 && HDU 1231 DP
- hdu 1058 DP
- HDU 1069 dp
- HDU 1024(DP)
- hdu 1257 dp+贪心
- HDU 1087(DP)
- HDU 1506(DP)
- KVO/KVC的demo
- 菜鸟学Java----String&StringBuffer
- 数据结构实验之二叉树四:还原二叉树
- source insight:打开文件所在的目录
- 数据结构实验之二叉树五:层序遍历
- HDU 2077(dp)
- php 数据库操作的封装 notorm框架
- 网络多线程-GCD队列组
- this和super的用法总结
- C++基础知识之cin与cout兄弟
- Apache Commons-SCXML系列之"HelloWorld"
- ngnix1.6.3 安装
- 网络多线程-单例模式ARC业余练习代码
- 使用visio画数据库模型图