給定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 卒不能通過對方馬的控制點。棋盤用座標表示,...