hdu 4665

时间:2024-09-11 22:07:14

转载一下  用的搜索   竟然过了 ............代码 .......

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int num[2100],weizhi[2100],m;
int dfs (int last,int st,int cur)
{
int i,u,j,k;
if(cur==m/2)
return 1;
for(i=st;i<m;i++)
if(!weizhi[i])
{
weizhi[i]=1;
for(u=i+1;u<m;u++)
if(num[u]==num[i]&&!weizhi[u]&&u>last)
{
weizhi[u]=-1;
if(dfs(u,st+1,cur+1))
return 1;
weizhi[u]=0;
}
weizhi[i]=0;
break;
}
return 0;
}
int main (void)
{
int n,i,u,k;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(i=0;i<m;scanf("%d",num+i++));
memset(weizhi,0,sizeof(weizhi));
dfs(0,0,0);
for(i=0;i<m;i++)
weizhi[i]==-1?printf("1"):printf("0");
printf("\n");
}
return 0;
}