poj 3537

nim博弈,简单,1A

代码:

#include<iostream>
#include<fstream>

using namespace std;

int g[2001];
int v[2001];

int solve(int s){
	int i,j,k;
	if(v[s]) return g[s];
	bool v2[2100]={0};
	v[s]=1;
	for(i=1;i<=s/2+1;i++)
	{
		if(i-3>=1)
			j=solve(i-3);
		else
			j=0;
		if(i+3<=s)
			k=solve(s-i-2);
		else
			k=0;
		v2[j^k]=1;
	}
	g[s]=0;
	for(i=0;;i++)
		if(v2[i]==0)
		{
			g[s]=i;
			break;
		}
	return g[s];
}



void read(){
//	ifstream cin("in.txt");
	int i,j,k;
	while(cin>>k){
		solve(k);
		if(g[k]!=0)
			cout<<1<<endl;
		else
			cout<<2<<endl;
		
	}

}

int main(){
	read();
	return 0;
}

posted on 2011-03-18 16:15  宇宙吾心  阅读(390)  评论(0)    收藏  举报

导航