| 比赛 | 
    顾研NOIP2011模拟赛 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    项链 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    Czb。 | 
    运行时间 | 
    0.083 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    1.79 MiB  | 
    | 提交时间 | 
    2012-10-18 10:10:42 | 
显示代码纯文本
#include<stdio.h>
#include<string.h>
int n,ans,a[30];
bool flag[30][30];
char s[30][1000];
void init()
{
	int i,j;
	for(i=1;i<=n;i++)
	{
		int l=strlen(s[i]);
		for(j=0;j<l;j++)
		{
			flag[i][s[i][j]-'A']=true;
		}
		for(j=0;j<26;j++)
		{
			a[i]<<=1;
			if(flag[i][j])
				a[i]++;
		}
	}
}
void dfs(int k,int flag,int count)
{
	if(k>n)
	{
		if(flag==0)
			ans=ans>count?ans:count;
		return;
	}
	dfs(k+1,flag,count);
	dfs(k+1,flag^a[k],count+1);
}
int main()
{
	freopen("necklaced.in","r",stdin);
	freopen("necklaced.out","w",stdout);
	int i;
	scanf("%d\n",&n);
	for(i=1;i<=n;i++)
		scanf("%s\n",s[i]);
	init();
	dfs(1,0,0);
	printf("%d\n",ans);
	return 0;
}