题目链接: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; }