zoukankan      html  css  js  c++  java
  • 汉诺塔III HDU

    汉诺塔III

    HDU - 2064
     
    约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。 
     现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。 
     Daisy已经做过原来的汉诺塔问题和汉诺塔II,但碰到这个问题时,她想了很久都不能解决,现在请你帮助她。现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边? 

    Input包含多组数据,每次输入一个N值(1<=N=35)。Output对于每组数据,输出移动最小的次数。Sample Input

    1
    3
    12

    Sample Output

    2
    26
    531440

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<queue>
     5 
     6 using namespace std;
     7 
     8 long long F(int num)    // 返回值较大时使用long long 
     9 {
    10     if(num == 1)
    11         return 2;
    12     return 3*F(num-1)+2;
    13 }
    14 
    15 int main()
    16 {
    17      int n;
    18      while(scanf("%d", &n) != EOF)
    19      {
    20          printf("%lld
    ", F(n));
    21      }
    22     
    23     
    24     return 0;
    25 }


  • 相关阅读:
    java基础—GUI编程(一)
    java基础—数组
    java基础—异常处理
    java基础—面向对象
    多线程(二)
    多线程(一)
    ORACLE数据库SQL语句的执行过程
    Jetty直接调试,不用部署,不用弄一些杂七杂八的设置
    (2.1)servlet线程安全问题
    (3)tomcat源代码分析环境的搭建
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/11517347.html
Copyright © 2011-2022 走看看