zufeoj_汉诺塔1

题目链接:http://acm.ocrosoft.com/problem.php?cid=1172&pid=15


题目描述

           Hanoi塔由n个大小不同的圆盘和三根木柱a,b,c组成。开始时,这n个圆盘由大到小依次套在a柱上,如图1所示。要求把a柱上n个圆盘按下述规则移到c柱上:

    (1)一次只能移一个圆盘;

    (2)圆盘只能在三个柱上存放;

    (3)在移动过程中,不允许大盘压小盘。

          问将这n个盘子从a柱移动到c柱上,总计需要移动多少个盘次?


输入

输入n

输出

输出需要移动多少个盘次

样例输入

3

样例输出

7


#include<bits/stdc++.h>
using namespace std;
int a[1111];
int hannuo(int n){
    a[1]=2;
    a[2]=3;
    for(int i=3;i<=n;i++){
        a[i]=2*a[i-1]+1;
    }
    return a[n];
}
int main(){
    int n;
    cin>>n;
    cout<<hannuo(n)<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_37345402/article/details/80753499