24h購物| | PChome| 登入
2009-11-10 21:39:20| 人氣856| 回應0 | 上一篇 | 下一篇

2006 NPSC C. 幼稚國王的獎賞

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : DFS搜組合+CUT

祥細內容請至NPSC補完計畫

/**********************************************************/

#include<stdio.h>        
#include<stdlib.h>        
int n,m;        
int input[50],MAX,num[50];
char appear[1048576];    
int queue[1048576],qtop=0;
void make (int now,int a,int n,int SUM)        
{        
  int b=a;  
  if(MAX==1048575) return;
 
  if(appear[SUM]!=0&&appear[SUM]>=now) return;
  else
     {
      if(appear[SUM]==0) queue[qtop++]=SUM;
      appear[SUM]=now;
      if(SUM>MAX) MAX=SUM;
     }
  if(now==n+1) return;
       make(now+1,b+1,n,SUM^input[now]);
       make(now+1,b+1,n,SUM);       
}        
main()        
{          
 while(scanf("%d",&n)==1&&n)        
    {        
       int a,b,c;     
       for(a=0;a<=qtop;a++)
          appear[queue[a]]=0;
       for(a=1;a<=n;a++)   
           scanf("%d",&input[a]);     
      int top=0;  
       for(a=1;a<=n;a++)  
          {  
            c=a;  
            for(b=a+1;b<=n;b++)  
               if(input[b]>input[c]) c=b;  
            int temp;  
            temp=input[c];  
            input[c]=input[a];  
            input[a]=temp;  
          }     
       for(a=1;a<=n;a++)  
          if(input[a]!=input[a-1])  
             num[++top]=input[a]; 
       MAX=0;qtop=0;
       make(1,1,top,0);           
       printf("%d\n",MAX);        
    }        
 return 0;           

台長: 來源不明
人氣(856) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: NPSC |
此分類下一篇:2008 NPSC H. 幼稚國王的行程
此分類上一篇:2006 NPSC A. 好多油瓶

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文