很简单的搜索
每一个数都有放和不放两种
然后暴力就好了
然后代码
#include<bits/stdc++.h>
using namespace std;
long long a[25];
int read(){//一个快读
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
long long ans=INT_MAX;int n;
long long s,sum1,sum2;
void dfs(int x){//搜索
if(x>n){
sum2=s-sum1;
ans=min(ans,abs(sum2-sum1));
return;
}else{
sum1+=a[x];//放
dfs(x+1);
sum1-=a[x];//不放
dfs(x+1);
}
}
int main (){
n=read();
for(int i=1;i<=n;i++){
a[i]=read();
s+=a[i];
}
dfs(1);
cout<<ans;
return 0;
}