22.(取奇数游戏) 该游戏规则如下: 操作者先输入一个奇数 N(<200)表示N个石
子. 设计算机为 A 方,操作者为 B 方, 双方轮流取石子,每次取1-3个. 最后取
到石子总数为奇数的一方获胜. 编制程序使计算机有较多的获胜机会,
下面是操作者先取的代码:
#include
using namespace std;
void main()
{
int A=0,B=0,C=2;//A电脑,B人,C总数
int i,k;
while(C%2==0||C<0)//输入一个大于零的奇数
{
cout<
cin>>C;
}
while(C>0)
{
k=0;
while(k>3||k<1||k>C)//取小于等于3大于0且最的数不能比剩下的数大
{
cout<
cin>>k;
}
C-=k;
B+=k;
cout<
k=A;//保存A,后面显示A的所取数量用
if(C>=4)//A取算法,A取所剩数与4的余数(如,剩7,则A取3,剩4)
{
i=C%4;
if(i!=0)
{
A+=i;
C-=i;
}
else//剩数与4余数为0,A取1
{
A++;
C--;
}
}
else if(C<4)//C小于4,A的不同取法
{
switch(C)
{
case 1:A++;C--;break;//C剩1时取数
case 2:A+=B%2!=0?(C--,1):(C-=2,2);break;//C为2时,B为奇偶不同取法
case 3:A+=B%2!=0?(C-=2,2):(C-=3,3);break;//C为3时,B为奇偶不同取法
}
}
cout<
cout<
}
if(A%2==0)//判断胜负
cout<
else
cout<
}