博弈問題

今盒子裏有 n 個小球,A、B 兩人輪流從盒中取球,每個人都可以看到另一個人取了多少個,也可以

看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷.

我們約定:

a).每個人從盒子中取出的球的數目必須是:1,3,7 或者 8 個.

b).輪到某一方取球時不能棄權!

c).A 先取球,然後雙方交替取球,直到取完.

d).被迫拿到最後一個球的一方爲負方(輸方).


C語言版:

#include <iostream>
using namespace std;
#define MAX 10000
#define LEN 10
int main()
{
    int a[]={1,3,7,8};
    int b[MAX+LEN]={0};
    for(int i=1;i<MAX;i++)
    {
        if(!b[i])
        {
            for(int j=0;j<4;j++)
            {
                b[i+a[j]]=1;
            }
        }
    }
    int num=0;
    while(printf("Please input a number:"))
    {
        scanf("%d",&num);
        if(num>MAX){
            printf("你輸入的數超出邊界!\n");
        //  continue;
        }
        else
        {
            printf("%d\n\n",b[num]);
        }
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章