您的位置:首页 > 其它

巴什博奕

2016-07-17 22:57 183 查看


实例:



分析:1张牌,先抓胜。

           2张牌,先抓胜。

           3张牌,后抓胜。

           4张牌,先抓胜。

           5张牌,分析:先抓的人第一次不能让自己胜,那尽量使剩下的牌数 得到的结果一定是后抓胜,如果不能,则说明结果是后抓胜。剩下3张牌的结果是后抓胜,所以先抓的人先抓2张,这样自己一定保证胜。

           5张牌,先抓胜。

           6张牌,分析能否抓一次使得剩下的牌数一定是后抓胜,没有,故后抓胜。

           7张牌,先抓胜

           ……

              n张牌,遍历2的0,1,2,3~k次方,(2的k次方<=n),判断(n-2的 i 次方)能否得到后抓胜,能则说明先抓胜,否则后抓胜

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int A[1001],n,i,j;
A[1]=A[2]=0;
A[3]=1;
A[4]=0;
for(i=5;i<=1000;i++)
{
for(j=0;pow(2,j)<=i;j++)
{
 if(A[i-int(pow(2,j))]==1||pow(2,j)==i) {A[i]=0;break;}
}
if(pow(2,j)>i) A[i]=1;
}
while(cin>>n)
{
if(A
==1) cout<<"Cici"<<endl;
else cout<<"Kiki"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: