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

    汉诺塔III

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 13272    Accepted Submission(s): 6096


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


     

    Input
    包含多组数据,每次输入一个N值(1<=N=35)。
     


     

    Output
    对于每组数据,输出移动最小的次数。
     


     

    Sample Input
    1 3 12
     


     

    Sample Output
    2 26 531440

    公式:Fn=3*F(n-1)+2,即Fn=3^n -1

    代码:

    #include<iostream>
    using namespace std;
    int main(void)
    {
      __int64 sum,n,i;
      while(cin>>n)
      {
          sum=1;
        for (i=1; i<=n; i++)
            sum=sum*3;
        cout<<sum-1<<endl;
      }
        return 0;        
    }
  • 相关阅读:
    I.MX6 Surfaceflinger 机制
    理解 Android Fragment
    RPi 2B DDNS 动态域名
    RPi 2B IPC webcam server
    理解 Android MVP 开发模式
    I.MX6 system.img unpack repack
    can't set android permissions
    VMware Ubuntu 共享文件夹
    解决oracle数据库连接不上的问题
    perfect-scrollbar示例
  • 原文地址:https://www.cnblogs.com/Blackops/p/5255246.html
Copyright © 2011-2022 走看看