問題:
今盒子裡有n個小球,a、b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。
我們約定:
每個人從盒子中取出的球的數目必須是:1,3,7或者8個。
輪到某一方取球時不能棄權!
a先取球,然後雙方交替取球,直到取完。
被迫拿到最後乙個球的一方為負方(輸方)
請程式設計確定出在雙方都不判斷失誤的情況下,對於特定的初始球數,a是否能贏?
程式執行時,從標準輸入獲得資料,其格式如下:
先是乙個整數n(n<100),表示接下來有n個整數。然後是n個整數,每個佔一行(整數<10000),表示初始球數。
程式則輸出n行,表示a的輸贏情況(輸為0,贏為1)。
例如,使用者輸入:
則程式應該輸出:
**如下:
public class main;
for(int i=1; i0)
}}
這個題的思路:a陣列代表可能的球的數量,從a[1]開始,a[1]一定對a來說時輸的,因為只代表乙個球。所以a[1]=0。那麼可以想到,1+·1, 1+3, 1+7,1+8這些球數時,正好並且到b選擇了,那麼b是一定贏的。基於此,我們對a陣列遍歷,如果a[i]=0,那麼它+1,+3,+7,+8的位置是置1的。 藍橋杯之取球問題
今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後乙個球的一...
藍橋杯取球博弈
題目 取球博弈 兩個人玩取球的遊戲。一共有n個球,每人輪流取球,每次可取集合中的任何乙個數目。如果無法繼續取球,則遊戲結束。此時,持有奇數個球的一方獲勝。如果兩人都是奇數,則為平局。假設雙方都採用最聰明的取法,第乙個取球的人一定能贏嗎?試程式設計解決這個問題。輸入格式 第一行3個正整數n1 n2 n...
藍橋杯 取球博弈
取球博弈 今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後...