題目
取球博弈
兩個人玩取球的遊戲。
一共有n個球,每人輪流取球,每次可取集合中的任何乙個數目。
如果無法繼續取球,則遊戲結束。
此時,持有奇數個球的一方獲勝。
如果兩人都是奇數,則為平局。
假設雙方都採用最聰明的取法,
第乙個取球的人一定能贏嗎?
試程式設計解決這個問題。
輸入格式:
第一行3個正整數n1 n2 n3,空格分開,表示每次可取的數目 (0
此題因為雙方都採用最聰明的取法,所以先觀察最聰明的取法:在保證能取得奇數的情況下,盡量取大數,
如果實在保證不了,直接取可取的最大數,雙方都這樣取,直到結束,比較取得總球數的奇偶性;
比如可取球數為1 2 3
總球數為5時 用a、b代表雙方:a->3,b->1,a->1結束,a輸;
總球數為8時 a->3,b->3,a->2結束,平局
總球數為9時 a->3,b->3,a->2,b->1,結束,a贏
**如下:
public static void main(string args)
for (int i = 0; i < 5; i++)
for (int i = 0; i < 3; i++)
} }for (int i = 0; i < 5; i++)
if(b[j]>a[i]) continue;
x+=b[j];
a[i]-=b[j];
x1 = true;
break;
}if(!x1)
}for (int j = 2; j >= 0; j--)
if(b[j]>a[i]) continue;
y+=b[j];
a[i]-=b[j];
y1 = true;
break;
}if(!y1)
}} if(y==0)else if(y%2==0&&x%2!=0)else if(y%2!=0&&x%2==0)else if(y%2==0&&x%2==0)else
}}
歡迎指正~ 藍橋杯 取球博弈
取球博弈 今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後...
藍橋杯 取球遊戲(博弈)
今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後乙個球的一...
藍橋杯2012河南初賽 取球博弈
今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後乙個球的一...