标签:printf 输入 main style ++ ems 不能 print mem
发布时间: 2016年6月26日 20:36 最后更新: 2016年6月26日 20:37 时间限制: 1000ms 内存限制: 128M
“你喝的酸奶是我买的,辣条也是我买的,你现在要跟我分手,你把我当什么?”
“因为你每次分辣条的时候都比我多一根!”
可见分好辣条是一件多么重要的事情。。
现在有n(1<=n<=200)根辣条,每根辣条的重量为a1,a2...ai..an(1<=ai<=100)。
那么能不能把这些辣条分为重量相等的两份呢?
输入有多组数据。
每组数据第一行为一个整数n(1<=n<=200),n代表辣条的数量。
第二行有n个整数,a1,a2...ai..an,其中ai(1<=ai<=100)代表第i根辣条的重量
若能分成重量相等的两份,则输出"YES",否则输出"NO"每个答案占一行
3 1 2 1 4 1 1 1 2
YES NO
01背包解决恰好装满情况,利用容积与价值相等。
#include<stdio.h> #include<string.h> int main() { int n,sum,i,j; int a[205],f[20005]; while(~scanf("%d",&n)){ sum=0; for(i=1;i<=n;i++){ scanf("%d",&a[i]); sum+=a[i]; } if(sum%2==1) printf("NO\n"); else{ sum/=2; memset(f,0,sizeof(f)); for(i=1;i<=n;i++){ for(j=sum;j>=0;j--){ if(j-a[i]>=0){ if(f[j-a[i]]+a[i]>f[j]) f[j]=f[j-a[i]]+a[i]; } } } if(f[sum]==sum) printf("YES\n"); else printf("NO\n"); } } return 0; }
标签:printf 输入 main style ++ ems 不能 print mem
原文地址:http://www.cnblogs.com/yzm10/p/7203559.html