演算法訓練 Hanoi問題

2021-07-25 23:36:57 字數 502 閱讀 5591

問題描述

如果將課本上的hanoi塔問題稍做修改:仍然是給定n只盤子,3根柱子,但是允許每次最多移動相鄰的m只盤子(當然移動盤子的數目也可以小於m),最少需要多少次?

例如n=5,m=2時,可以分別將最小的2個盤子、中間的2個盤子以及最大的乙個盤子分別看作乙個整體,這樣可以轉變為n=3,m=1的情況,共需要移動7次。

輸入格式

輸入資料僅有一行,包括兩個數n和m(0<=m<=n<=8)

輸出格式

僅輸出乙個數,表示需要移動的最少次數

樣例輸入

5 2

樣例輸出

7

#include "stdio.h"

int count=0 ;

void fun(int n,int m,char a,char b,char c)

else

}int main()

藍橋杯 演算法訓練 Hanoi問題

如果將課本上的hanoi塔問題稍做修改 仍然是給定n只盤子,3根柱子,但是允許每次最多移動相鄰的m只盤子 當然移動盤子的數目也可以小於m 最少需要多少次?例如n 5,m 2時,可以分別將最小的2個盤子 中間的2個盤子以及最大的乙個盤子分別看作乙個整體,這樣可以轉變為n 3,m 1的情況,共需要移動7...

藍橋杯試題 演算法訓練 Hanoi問題 C C

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 如果將課本上的hanoi塔問題稍做修改 仍然是給定n只盤子,3根柱子,但是允許每次最多移動相鄰的m只盤子 當然移動盤子的數目也可以小於m 最少需要多少次?例如n 5,m 2時,可以分別將最小的2個盤子 中間的2個盤子以及最大的乙個盤...

演算法分析 Hanoi塔問題

上圖為 3 階 hanoi 塔 假設有三個命名為 a b c 的塔座 在塔座a上插有n個直徑大小不相同,由小到大編號為1 2 3 n的圓盤,要求將a座上的圓盤移至塔座c 並按同樣的順序疊排 圓盤移動必須遵守下列規則 1 每次只能移動乙個圓盤 2 圓盤可以插在任意乙個塔座上 3 任何時刻都不能將乙個較...