南阳 zb的生日和邮票分你一般(01背包思路)

这两道题其实是一样的。。。

zb的生日 ->点击打开链接

邮票分你一半-> 点击打开链接

其实就是把01背包里的总体积换成所有邮票面值之和的一半,同理zb的生日。


邮票AC代码:


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

int dp[10000] ;
int n,a[10000],t ;

int main()
{
    while(scanf("%d",&t)!=EOF)
    {
        while(t--)
        {
            scanf("%d",&n) ;
            int sum = 0 ;
            memset(dp,0,sizeof(dp)) ;
            for(int i = 0 ;i<n ;i++)
            {
                scanf("%d",&a[i]) ;
                sum += a[i] ;
            }
            for(int i = 0 ;i<n ;i++)
            {
                for(int j = sum/2;j>=a[i] ;j--)
                {
                    dp[j] = max(dp[j],dp[j-a[i]]+a[i]) ;
                }
            }
            printf("%d\n",sum-2*dp[sum/2]) ;
        }
    }
    return 0 ;
}


posted @ 2015-04-07 21:03  emoji  阅读(206)  评论(0编辑  收藏  举报