input | output |
---|---|
5 5 8 13 27 14 |
3 |
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <iostream> #include <algorithm> #include <queue> #include <map> #include <vector> using namespace std; int dp[1000005]; //数组必须开到100W以上 int main() { int n,i,j; int a[25]; scanf("%d",&n); memset(dp,0,sizeof(dp)); int ans=0; for(i=0; i<n; i++) { scanf("%d",&a[i]); ans+=a[i]; } int sum=ans/2; for(i=0; i<n; i++) { for(j=sum; j>=a[i]; j--) { dp[j]=max(dp[j],dp[j-a[i]]+a[i]); } } printf("%d\n",ans-dp[sum]*2); return 0; }
原文:http://blog.csdn.net/sky_miange/article/details/44599345