ボール取りゲーム
795 ワード
テーマ:
n個のボールn<=1000があって、甲乙の2人は交代で取って、1、3、7、8個しか取れなくて、誰が最後に完全部のボールを取って負けて、甲は先に取って、すべて最も良い策略を取って、甲に勝って勝つことを聞きますか?
必勝と必敗のどちらかを見つければいい.
ボールが1つあれば、必ず負けます.
2つのボールは、必勝状態で、私は1つのボールを持っていくだけで、必敗状態に転化したからです.
3つのボール、必敗状態、私が1つ持って行っても3つ持って行っても必勝状態になったからです.
4球、必勝、1球を取るだけで必敗になるから
...
...
...
n個のボールn<=1000があって、甲乙の2人は交代で取って、1、3、7、8個しか取れなくて、誰が最後に完全部のボールを取って負けて、甲は先に取って、すべて最も良い策略を取って、甲に勝って勝つことを聞きますか?
必勝と必敗のどちらかを見つければいい.
ボールが1つあれば、必ず負けます.
2つのボールは、必勝状態で、私は1つのボールを持っていくだけで、必敗状態に転化したからです.
3つのボール、必敗状態、私が1つ持って行っても3つ持って行っても必勝状態になったからです.
4球、必勝、1球を取るだけで必敗になるから
...
...
...
#include <iostream>
using namespace std;
int main()
{
freopen("C:\\in.txt","r",stdin);
int flag[1001]={0};
int b[]={1,3,7,8};
int T;
scanf("%d",&T);
while(T--)
{
int num;
scanf("%d",&num);
for(int i=2;i<=num;i++)
for(int j=0;j<4&&b[j]<i;j++)
if(flag[i-b[j]]==0)
{
flag[i]=1;
break;
}
printf("%d
",flag[num]);
}
return 0;
}