盒子取球方法二今盒子裡有 n 個小球,a、b 兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,
也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。
我們約定:每個人從盒子中取出的球的數目必須是:1,3,7 或者 8 個。輪到某一方取球時不能棄權!
a 先取球,然後雙方交替取球,直到取完。被迫拿到最後乙個球的一方為負方(輸方)請程式設計確定出在雙方都
不判斷失誤的情況下,對於特定的初始球數,a 是否能贏?程式執行時,從標準輸入獲得資料,其格式如下:
先是乙個整數 n(n<100),表示接下來有 n 個整數。然後是 n 個整數,每個佔一行(整數<10000),
表示初始球數。程式則輸出 n 行,表示 a 的輸贏情況(輸為 0,贏為 1)。
分析:當 n==1 時,a一定會輸,當n等於3,5時a也會輸,n為2,4,8時a必定會贏,由此分析當 n 為 1+
[1,3,7,8]時,a可以取[1,3,7,8]得乙個數,然後將1留給b,也就是說,有些必輸得數誰取到誰就會輸。當 n為乙個必輸
的值加上[1,3,4,8]時a比贏。
**如下:
#include
void fun(int *a)
int b=;
int i;
for(i=1;i+8<=1000;i++)//注意此處i的取值,
if(a[i]==0)
for(int j=0;j<=3;j++)//根據必輸的值找出必贏的值
a[i+b[j]]=1;
int main()
int a[1001]=;
int n,m;
scanf("%d",&n);
fun(a);
while(n--)
scanf("%d",&m);
printf("%d\n",a[m]);
return 0;
所有取球方案
程式設計題 袋子裡有n個球,每次取只能取1個 2個 3個球,請輸出所有可能的情況。例如,假設袋子裡有4個球,則所有可能情況為 1 1 1 1 1 2 1 1 32 2 3 11 1 2 2 1 1 思路 固定第一次取球次數i,然後考慮袋子裡有n i個球的情況。固定第二次取j,考慮n i j的情況 遞...
藍橋杯取球博弈
題目 取球博弈 兩個人玩取球的遊戲。一共有n個球,每人輪流取球,每次可取集合中的任何乙個數目。如果無法繼續取球,則遊戲結束。此時,持有奇數個球的一方獲勝。如果兩人都是奇數,則為平局。假設雙方都採用最聰明的取法,第乙個取球的人一定能贏嗎?試程式設計解決這個問題。輸入格式 第一行3個正整數n1 n2 n...
藍橋杯 取球博弈
取球博弈 今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後...