hdoj1847

n/p点判断,用了记忆化搜索,开始的时候main()里面k=i-1写成了int k=i-1死活过不了sample,调了一个多小时。。泪奔~

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int a[15];
int game[1001];
int k;
int f(int x)
{
	if(game[x]!=-1)
	{
		return game[x];
	}
	int i;
	for(i=0;i<=k;i++)
	{
		if(x-a[i]>=0 && (f(x-a[i]))==0)
		{
			game[x]=1;
			return game[x];
		}
	}
	game[x]=0;
	return game[x];
}
int main()
{
	int i,n;
	a[0]=1;
	for(i=1;i<=14;i++)
	{
		a[i]=a[i-1]*2;
	}
	while(scanf("%d",&n)!=EOF)
	{
		memset(game,-1,sizeof(game));
		for(i=0;i<=14;i++)
			if(n<a[i])
				break;
		k=i-1;
		game[0]=0;
		if(f(n)==0)
			printf("Cici\n");
		else
			printf("Kiki\n");
	}

//system("pause");
return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>