資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
如果將課本上的hanoi塔問題稍做修改:仍然是給定n只盤子,3根柱子,但是允許每次最多移動相鄰的m只盤子(當然移動盤子的數目也可以小於m),最少需要多少次?
例如n=5,m=2時,可以分別將最小的2個盤子、中間的2個盤子以及最大的乙個盤子分別看作乙個整體,這樣可以轉變為n=3,m=1的情況,共需要移動7次。
輸入格式
輸入資料僅有一行,包括兩個數n和m(0<=m<=n<=8)
輸出格式
僅輸出乙個數,表示需要移動的最少次數
樣例輸入
5 2樣例輸出
思路:漢諾塔也算乙個比較經典的例題了,可以幫助我們很好地理解遞迴呼叫,有興趣的朋友可以看看這個題。本題漢諾塔問題已經解釋了乙個盤三個柱子(目標是將a柱子中的盤放入c柱子),直接將a柱子放入c柱子即可,二的盤的話需要借助b柱子,最上面的盤放入b柱子,再將下面的盤放入c柱子,最後將b柱子的盤放入c柱子即可,而根據盤子數目的放法滿足2的n次方減1(計算公式),題中做了點小小的改變,可以不止移動乙個盤子,所以可以轉化為m等於1,而對應的n則為:如果n對m取餘不等於零則n對m的商加一,否則不用加(因為已經移動完成),再利用上述公式即可。
**如下:
#include
#include
using
namespace std;
main()
cout<<
pow(
2,i)-1
;}
藍橋杯 演算法訓練 Hanoi問題
如果將課本上的hanoi塔問題稍做修改 仍然是給定n只盤子,3根柱子,但是允許每次最多移動相鄰的m只盤子 當然移動盤子的數目也可以小於m 最少需要多少次?例如n 5,m 2時,可以分別將最小的2個盤子 中間的2個盤子以及最大的乙個盤子分別看作乙個整體,這樣可以轉變為n 3,m 1的情況,共需要移動7...
試題 演算法訓練 Anagrams問題 藍橋杯
試題 演算法訓練 anagrams問題 資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 anagrams指的是具有如下特性的兩個單詞 在這兩個單詞當中,每乙個英文本母 不區分大小寫 所出現的次數都是相同的。例如,unclear 和 nuclear rimon 和 minor 都是...
藍橋杯試題 演算法訓練 數列 C
資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 30,31,30 31,32,30 32,31 3...