HDU 1207
来源:互联网 发布:java程序员适合用mac吗 编辑:程序博客网 时间:2024/06/08 09:44
汉诺塔II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7410 Accepted Submission(s): 3677
Problem Description
经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今仍在一刻不停地搬动着圆盘。恩,当然这个传说并不可信,如今汉诺塔更多的是作为一个玩具存在。Gardon就收到了一个汉诺塔玩具作为生日礼物。
Gardon是个怕麻烦的人(恩,就是爱偷懒的人),很显然将64个圆盘逐一搬动直到所有的盘子都到达第三个柱子上很困难,所以Gardon决定作个小弊,他又找来了一根一模一样的柱子,通过这个柱子来更快的把所有的盘子移到第三个柱子上。下面的问题就是:当Gardon在一次游戏中使用了N个盘子时,他需要多少次移动才能把他们都移到第三个柱子上?很显然,在没有第四个柱子时,问题的解是2^N-1,但现在有了这个柱子的帮助,又该是多少呢?
Gardon是个怕麻烦的人(恩,就是爱偷懒的人),很显然将64个圆盘逐一搬动直到所有的盘子都到达第三个柱子上很困难,所以Gardon决定作个小弊,他又找来了一根一模一样的柱子,通过这个柱子来更快的把所有的盘子移到第三个柱子上。下面的问题就是:当Gardon在一次游戏中使用了N个盘子时,他需要多少次移动才能把他们都移到第三个柱子上?很显然,在没有第四个柱子时,问题的解是2^N-1,但现在有了这个柱子的帮助,又该是多少呢?
Input
包含多组数据,每个数据一行,是盘子的数目N(1<=N<=64)。
Output
对于每组数据,输出一个数,到达目标需要的最少的移动数。
Sample Input
1312
Sample Output
1581思路:http://www.cnblogs.com/fanzhidongyzby/archive/2012/07/28/2613173.html看了这篇论文就什么也明白了!!!写的真不错//F(n) = 2*F(n-r)+2^r-1;//可以递推得出答案,也可以公式法求//公式://当 r = (sqrt(8*n+1)-1)/2 时F(N)最大//F(N) = (N-(r*r-r+2)/2)*2^r+1;#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>using namespace std;typedef long long int ll; ll F[100];//递推公式求解 int main(){F[1] = 1;F[2] = 3;for(int i=3; i<=64; i++){ll Min = 99999999999999;for(int j=1; j<i; j++)Min = min(Min*1.0,2*F[i-j]+pow(2,j)-1);F[i] = Min;}int N;while(~scanf("%I64d",&N)){printf("%I64d\n",F[N]);}return 0;}/*//最值函数求解 int main(){ll N;ll ans;while(~scanf("%I64d",&N)){ll r = (sqrt(8*N+1)-1)/2;ans = (N-(r*r-r+2)/2)*pow(2,r)+1;printf("%I64d\n",ans);}return 0;}*/
0 0
- hdu 1207
- HDU 1207
- HDU 1207
- hdu 1207 汉诺塔II
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔
- hdu 1207 汉诺塔2
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔II
- HDU 1207 汉诺塔问题
- hdu 1207 汉诺塔II
- hdu 1207 汉诺塔II
- HDU 1207汉诺塔II
- hdu 1207 DP
- hdu 1207 变形汉诺塔
- hdu 1207 变形汉诺塔 .
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔II
- lpa 半监督学习 之--标签传播算法
- java容器 -- 遍历Map中的内容
- Android全球定位系统GPS实时获取位置-Oak先生
- 一、H5全景图-朋友圈全景图-720°全景-VR -----工具使用
- BMT硬件之系统(一):单片机、DSP、嵌入式、微控制器的区分
- HDU 1207
- 神奇的题(存石油的洞穴,uva 1442)
- 数学骗术
- LA4254 Processor (贪心+二分)
- 二、H5全景图-朋友圈全景图-720°全景-VR ---- 项目简单分析
- CodeForces 714D Searching Rectangles
- iOS应用安全读书笔记之联系人地址簿
- 使用Hibernate框架开发步骤
- (九)c52学习之旅-定时器