取石子遊戲
有兩堆石子,雙方輪流取走一些石子,合法的取法有如下兩種:
1、在一堆石子中取走任意多顆;
2、在兩堆石子中取走相同多的任意顆;
約定取走最後一顆石子的人為贏家,求必勝策略。
滿足下列公式的為必敗情況:
k:第k中必敗情況。
至於為什麼有這個**分割數( (1 + sqrt(5))/2 ),這裡
m(k) = k * (1 + sqrt(5))/2
n(k) = m(k) + k;
如果給你兩個數a,b(a
1.很容易得到k=b-a,再判斷m==k*(sqrt(5)+1)/2;
2.先由a=k*(1+sqrt(5))/2,可反解k=(int)(sqrt(5)-1)*n/2+1,再判斷 m==k*(sqrt(5)+1)/2 ,n==m+k
上**,通俗易懂
#include #include int main()
int k=n-m;
n=(int )(k*(sqrt(5)+1))/2;
if(m==n)
printf("0\n");
else
printf("1\n");
}return 0;
}
威佐夫博奕
威佐夫博奕 模型 有兩堆石子,石子數目分別為n和m,現在兩個人輪流從兩堆石子中取石子,每人每次取石子時可以從一堆石子中拿走若干個,也可以從兩堆中取相同數量的石子,取完最後一堆石子的人贏。這種情況有些複雜,先用 m,n 表示兩堆石子的數目,並稱其為局勢,如果兩人中某人面對 0,0 的局勢,則他已經輸了...
威佐夫博奕
接上次的巴什博奕之後,我在說說威佐夫博奕。仍然先簡單介紹一下 有兩堆物品若干,數量可以相同可以不同,兩個人輪流從某一堆任意取或是同時從兩堆中取同樣多的物品,規定每次至少取乙個,與巴什博奕不同,這裡沒有規定取出的物品的上限,最後取完物品的人獲得遊戲勝利。這種情況比之前的巴什博奕略微複雜一點。我們使用 ...
威佐夫博奕
1001 買單 time limit 1 sec memory limit 128 mb 64bit io format lld submitted 250 accepted 116 submit status web board description 2020年wh和cf在上海和平飯店約著吃飯,...