藍橋杯 試題 演算法提高 漢諾塔

2021-10-23 12:25:06 字數 722 閱讀 9589

3 2

#2: a->b

7

1、本題利用遞迴思想便可以很簡單的理解其思路。在a上有n個盤子時,只需要將上面的n-1個盤中利用c,按規則放置在b上,然後將a上的最後乙個盤中放置在c上即可;同理,下一步將b上的n-2個盤子利用c放置在a上即可,以此類推。

void

hanoi

(int n,

char a,

char b,

char c)

}

2、基本過程完成後,根據題意只需要判斷每一步移動時,是移動的第幾步,以及移動的是哪乙個盤子。

a、加入計數count,每次移動計數即可。

b、當a有n個盤子時,首先移動上面n-1個較小的盤子到b,然後移動最下面最大的第n個盤子到c。以此類推,每次移動都是最下面的盤子,因此當只有乙個盤子時,一定是第乙個盤子。

#include

using

namespace std;

int count=0;

int m;

void

hanoi

(int n,

char a,

char b,

char c)

else

}int

main()

藍橋杯 試題 演算法提高 漢諾塔

問題描述 輸入格式 一行,包含2個正整數,乙個是n n 15 表示要移動的盤子數 乙個是m,表示在最少移動d第m步 輸出格式 共2行。第一行輸出格式為 no a b,表示第m步驟具體移動方法,其中no表示第m步移動的盤子的編號 n個盤子從上到下依次編號為1到n 表示第m步是將no號盤子從a杆移動到b...

試題 演算法提高 漢諾塔

問題描述 輸入格式 一行,包含2個正整數,乙個是n n 15 表示要移動的盤子數 乙個是m,表示在最少移動d第m步 輸出格式 共2行。第一行輸出格式為 no a b,表示第m步驟具體移動方法,其中no表示第m步移動的盤子的編號 n個盤子從上到下依次編號為1到n 表示第m步是將no號盤子從a杆移動到b...

藍橋杯 演算法提高 漢諾塔(遞迴)(C )

問 如何移?最少要移動多少次?輸入格式 一行,包含2個正整數,乙個是n n 15 表示要移動的盤子數 乙個是m,表示在最少移動d第m步 輸出格式 共2行。第一行輸出格式為 no a b,表示第m步驟具體移動方法,其中no表示第m步移動的盤子的編號 n個盤子從上到下依次編號為1到n 表示第m步是將no...