码迷,mamicode.com
首页 > 其他好文 > 详细

USACO--2.1Subset Sums

时间:2015-03-15 09:39:26      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:usaco   dp   

开始的时候,用dfs去做,结果果断超时;后面看了一下,原来就是一个0--1背包的变形题。


代码如下:


/*
ID: 15674811
LANG: C++
TASK: subset
*/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<fstream>
using namespace std;

int main()
{
         ///ofstream cout("subset.out");
         ///ifstream cin("subset.in");
         long long V[700];   ///答案的最大值超过了int的范围
         int n;
         while(cin>>n)
         {
               int sum=0;
               for(int i=1;i<=n;i++)
                    sum+=i;
               if(sum%2)
               {
                       cout<<"0"<<endl;
                       continue;
               }
               sum=sum/2;
               memset(V,0,sizeof(V));
               V[0]=1;
                for(int i=1;i<=n;i++)
                    for(int j=sum;j>=i;j--)
                    {
                          V[j]+=V[j-i];
                    }
                cout<<V[sum]/2<<endl;
         }
   return 0;
}


USACO--2.1Subset Sums

标签:usaco   dp   

原文地址:http://blog.csdn.net/acm_lkl/article/details/44261529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!