hdu 4665

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

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


posted @ 2013-08-08 17:48  xlc2845  阅读(102)  评论(0)    收藏  举报