【動態規劃】數字分組I
時間限制: 1 Sec 內存限制: 64 MB提交: 10 解決: 6
[提交][狀態][討論版]
題目描述
輸入
輸出
樣例輸入
5
1 2 3 4 5
樣例輸出
1
將問題轉化爲求揹包容量爲所有數總和一半的揹包問題
#include <iostream> #include <cstring> using namespace std; int f[1555555]={0},sum,n; int a[33]; int main() { cin>>n; sum=0; memset(f,0,sizeof(f)); for(int i=0;i<n;i++) { cin>>a[i]; sum+=a[i]; } for(int i=0;i<n;i++) { for(int j=sum/2;j>=a[i];j--) { f[j]=max(f[j],f[j-a[i]]+a[i]); } } cout<<sum-2*f[sum/2]<<endl; return 0; }