博弈问题

今盒子里有 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;
}


你可能感兴趣的:(c,博弈问题)