1139 NOIP2007 Hanoi雙塔問題

2021-09-30 17:53:47 字數 1098 閱讀 4090

給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有空的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的(下圖為n=3的情形)。現要將 這些國盤移到c柱上,在移動過程中可放在b柱上暫存。要求:

(1)每次只能移動乙個圓盤;

(2) a、b、c三根細柱上的圓盤都要保持上小下大的順序;

任務:設an為2n個圓盤完成上述任務所需的最少移動次數,對於輸入的n,輸出an。

乙個正整數n,表示在a柱上放有2n個圓盤。

僅一行,包含乙個正整數,為完成上述任務所需的最少移動次數an。

sample input1:

sample input2:

sample output1:

sample output2:

【限制】

對於50%的資料, 1<=n<=25

對於100% 資料, 1<=n<=200 

【提示】 設法建立an與an-1的遞推關係式。

設f[i]表示a柱放2*i個圓盤的最少移動步數,則有

f[i]=f[i-1]*2+2

其中f[1]=2,上式子的含義是,先把除了當前最大的兩個盤子的其他盤子(即2*(i-1)個盤子的最少移動步數)移動到b柱,然後把最大的兩個盤子移動到c柱,最後再把2*(i-1)個盤子移動到c柱。

注意2^200要用高精度。

#include#define m 1000000

using namespace std;

int n,f[210];

int getlen(int x)

return l;

}int main()

while(f[f[0]+1]>0) f[0]++;

} printf("%d",f[f[0]]);

for(int i=f[0]-1;i>0;i--)

return 0;

}

noip2007 獎學金 (排序)

a1159.獎學金 時間限制 1.0s 記憶體限制 256.0mb 總提交次數 797ac次數 339 平均分 60.95 將本題分享到 檢視未格式化的試題 提交試題討論 試題 noip2007 普及組 問題描述 某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,...

NOIP2007解題報告

第一題 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。解題過程 直接sort快拍然後掃瞄一遍即可。第二題 在初賽普及組的 閱讀程式寫結果 的問題中,我...

NOIP2007 普及組 獎學金

獎學金 問題描述 某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的...