?? 1207 漢諾塔ii.cpp
字號:
/*
1207 漢諾塔II
Time Limit : 1000 ms Memory Limit : 32768 K Output Limit : 256 K
GUN C++
*/
/*分治法問題。
可以理解為:首先將塔的上端i個盤子通過四個柱子移動到B柱子上,
再將剩下的N-i個盤子通過三個柱子移動到C柱子上。最后再將B柱上的i個盤子移動到C柱子上。
依照這個思路來推導出公式即可。
f[1]:=1;
f[2]:=f[1]+2;f[3]:=f[2]+2;------加倆個2
f[4]:=f[3]+4;f[5]:=f[4]+4;f[6]:=f[5]+4;-----加3個4
。。。。。。---加4個8
*/
#include <iostream>
#include <cstdio>
using namespace std;
int step[65];
int main()
{
int t,n,i,j,now;
t=1;now=1;step[0]=0;
for(i=1;i<=11;i++)
{
for(j=0;j<i;j++)
{
if(now>64)
break;
step[now]=step[now-1]+t;
now++;
}
t*=2;
}
while(scanf("%d",&n)==1)
{
cout<<step[n]<<endl;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -