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;
}

posted on 2011-03-17 13:28  宇宙吾心  阅读(193)  评论(0)    收藏  举报

导航