poj 1740
博弈,首先讨论石头堆两堆两堆相等的情况,例如x,x,y,y,z,z.6堆的情况.
在这种情况下先取的必输,很简单,先取的那人怎么取后取的那人就怎么取(如 果对方把石头分配到一堆上,你就分配到与之对应的堆上),
总之保持这个相等的均势不变,这样到最后,后取的人就将取走最后一堆石头.
代码:
#include<iostream>
#include<fstream>
using namespace std;
int a[11];
int cmp(const void *a,const void *b){
return *((int *)a)-*((int *)b);
}
void read(){
ifstream cin("in.txt");
int i,j,k;
int n;
while(1){
cin>>n;
if(n==0) return;
for(i=1;i<=n;i++)
cin>>a[i];
if(n%2==0)
{
qsort(a+1,n,sizeof(int),cmp);
for(i=1;i<=n;i+=2)
if(a[i]!=a[i+1])
break;
if(i<=n) cout<<1<<endl;
else
cout<<0<<endl;
}
else
cout<<1<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号