試題 基礎練習 FJ的字串(漢諾塔) 遞迴

2021-10-03 10:28:39 字數 1663 閱讀 4902

1.對於漢諾塔,給了k層的碟 和三個分別為a、b、c的柱子,碟都在a上。

我們如何解決問題的呢?我們是將k-1層從a移動到b上,再將第k個碟子由a移動到c這個柱子上,再將k-1層移動到k的上面。

至於k-1層如何移動我們不需要考慮。

2.對於這兩層的關係,我們可以知道k層總的移動數就是k-1層移動的數量+第k層從a到c的數量(也就是1)+k-1層移動的數量。

3.同理,k-1層也就一樣啊,也就是k-2層移動的數量加上第k-1層從a移動到c的數量再加上k-2層搬到第k-1層移動的數量。至於k-1層如何,我們還是不用考慮

…**4.**最後到了遞迴終結的條件了,就是只有一層的時候,直接就是1

#include

using

namespace std;

int n;

solve

(int x,

char a,

char b,

char c)

else

}int

main()

傳送門

題目大意是:要移動x層碟子,第k層移動了多少步

一層:第一層 移動1步

二層:第一層 移動2步

第二層 移動1步

三層:第一層 移動4步

第二層 移動2步

第三層 移動1步

…從這裡就能發現規律,2^(x-k),但用pow肯定會爆

#include

using

namespace std;

typedef

long

long ll;

int n,x,k;

ll solve

(int a,

int b)

return2*

solve

(a-1

,b);

}int

main()

return0;

}

傳送門

這道題讓我對遞迴進一步加深。

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

fj在沙盤上寫了這樣一些字串:

a1 = 「a」

a2 = 「aba」

a3 = 「abacaba」

a4 = 「abacabadabacaba」

… …你能找出其中的規律並寫所有的數列an嗎?

輸入格式

僅有乙個數:n ≤ 26。

輸出格式

請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空格或換行、回車符。

樣例輸入

3樣例輸出

abacaba

題解:這道題跟漢諾塔相同。

a4=a3+1+a3

…ak=ak-1+1+ak-1

遞迴終止 a

#include

using

namespace std;

int n;

void

solve

(int x)

else

}int

main()

基礎練習 FJ的字串

題目鏈結藍橋杯 基礎練習 題解 問題描述 fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?輸入格式 僅有乙個數 n 26。輸出格式 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空...

基礎練習 FJ的字串

問題描述 fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?輸入格式 僅有乙個數 n 26。輸出格式 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空格或換行 回車符。樣例輸入 3樣...

基礎練習 FJ的字串

問題描述 fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?輸入格式 僅有乙個數 n 26。輸出格式 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空格或換行 回車符。樣例輸入 3樣...