天天看點

序列拆分

題目:

序列拆分
#include <bits/stdc++.h>
using namespace std;
int f[1000005];
int a[105];
int main()
{
  int n;
  cin>>n;
  long long m=0;
  
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
    m+=a[i];
  }
  
  for(int i=1;i<=n;i++)
  {
    for(int j=m/2;j>=a[i];j--)
    {
      f[j]=max(f[j],f[j-a[i]]+a[i]);
    }
  }
  
  cout<<abs(m-f[m/2]-f[m/2])<<endl;
  return 0;
}      

繼續閱讀