Problem Description
還記得漢諾塔III嗎?他的規則是這樣的:不允許直接從最左(右)邊移到最右(左)邊(每次移動一定是移到中間杆或從中間移出),也不允許大盤放到小盤的上面。xhd在想如果我們允許最大的盤子放到最上面會怎麼樣呢?(只允許最大的放在最上面)當然最後需要的結果是盤子從小到大排在最右邊。
Input
輸入數據的第一行是一個數據T,表示有T組數據。
每組數據有一個正整數n(1 <= n <= 20),表示有n個盤子。
Output
對於每組輸入數據,最少需要的擺放次數。
Sample Input
2
1
10
Sample Output
2
19684
解題思路:
這道題就是畫圖,找出規律。
當n爲1時,擺放2次,
當n爲2時,擺放4次,
當n爲3時,擺放10次,
當n爲4時,擺放28次
......
當爲n次時,擺放的次數爲 a [ n - 1 ] * 3 - 2次
即使用遞歸
代碼如下:
#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,n;
scanf("%d",&n);
int a[15]={0};
a[1]=2;
for(i=2;i<=n;i++)
{
a[i]=a[i-1]*3-2;
}
printf("%d\n",a[n]);
}
}