1、比较像巴什博弈。。。数学真的挺重要。用递推做,只要让当前石子数减去合法取法,得到的数值是必败的,那就说明这样能使对手达到必败局面,则当前是必胜局面。
#include<cstdio>
#include<cstring>using namespace std;
int a[15],n,m;
bool state[1000010];
int main(){
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
memset(state,false,sizeof(state));
for(int i=0;i<=n;i++){
for(int j=0;j<m;j++)
if(i>=a[j]&&!state[i-a[j]]){
state[i]=true;
break;
}
}
if(state[n])
printf("Stan wins\n");
else
printf("Ollie wins\n");
}
return 0;
}