24h購物| | PChome| 登入
2009-10-02 22:42:00| 人氣1,119| 回應0 | 上一篇 | 下一篇

USACO C-分堆大考驗

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

作法: DP

有點像是採藥那樣的DP,在此感謝 andy3466 的協助

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

#include<stdio.h>     
#include<stdlib.h>  
main()  
{  
 int n,a,b,c;  
 while(scanf("%d",&n)==1)
  { 
     int sum=0,flag=0;  
     int temp[50];
     long long int value[5001]={0};  
     for(b=0;b<n;b++)  
      {  
        temp[b]=b+1;
        sum=sum+temp[b];
      }
     if(sum%2!=0) {printf("0\n");continue;}
     sum/=2;
     for(b=0;b<n;b++)
         for(c=sum-temp[b];c>=0;c--)  
            if(c==0)   value[temp[b]]++;
            else  if(value[c]) value[c+temp[b]]+=value[c];

     printf("%lld\n",value[sum]/2);
  }  
 return 0;   

台長: 來源不明
人氣(1,119) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:97全國資訊學科能力競賽 3. 找關鍵人物
此分類上一篇:板橋高中98-2模擬測驗 B-成績單

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