首页 > 其他 > 详细

USACO--2.1Subset Sums

时间:2015-03-15 09:37:02      阅读:238      评论:0      收藏:0      [点我收藏+]

开始的时候,用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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!