codeves天梯 Hannoi雙塔問題

2021-07-26 15:30:48 字數 978 閱讀 4139

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

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

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

任務:設an

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

。分析:這題一開始沒有太多的頭緒,後來變手算結果發現前三個結果為2,2+4=6,2+4+8=14,於是猜測了遞推式,為正解。

const

maxn=500;

var a:array[0..maxn,0..maxn] of int64;

n,j,i:longint;

t:int64;

procedure mu1;

var g,i,b:longint;

s:int64;

begin

g:=0;

b:=2;

for i:=maxn downto 1 do

begin

s:=a[i,j-1]*b+g;

a[i,j]:=s mod 10;

g:=s div 10;

end;

end;

procedure add;

var i:longint;

begin

a[maxn,j]:=a[maxn,j]+2;

for i:=maxn downto 1 do

begin

a[i-1,j]:=a[i-1,j]+a[i,j] div 10;

a[i,j]:=a[i,j] mod 10;

end;

end;

begin

fillchar(a,sizeof(a),0);

readln(n);

j:=0;

while j

codeves天梯 均分紙牌

有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。...

codeves天梯 合併果子

在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。...

codeves天梯 過河卒

如圖,a 點有乙個過河卒,需要走到目標 b 點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c 點上的馬可以控制 9 個點 圖中的p1,p2 p8 和 c 卒不能通過對方馬的控制點。棋盤用座標表示,...