背包变形
#include<iostream> #include<fstream> using namespace std; int f[1024],a[111];//注意f[1024]的范围尽量大点 int main() { int i,j,n,sum=0; //fstream cin("d:\\test.txt"); cin>>n; for(i=0;i<n;i++) { cin>>a[i]; sum+=a[i]; } for(i=0;i<n;i++) for(j=sum/2;j>=a[i];j--) if(f[j]<f[j-a[i]]+a[i]) f[j]=f[j-a[i]]+a[i]; cout<<sum-f[sum/2]-f[sum/2]<<endl; return 0; }