5 5 8 13 27 14
3
#include<stdio.h> #define max(a,b) a>b?a:b int a[10000]; int sum[10000]; int v,ans; void dfs(int i,int cut) { if(i==0) { ans=max(ans,cut); return ; } if(ans==v||cut+sum[i]<=ans) return ; if(cut+a[i]<=v)//这个地方出错了,错写成cut+a[i]<v dfs(i-1,cut+a[i]); dfs(i-1,cut); } int main() { int n; while(scanf("%d",&n)!=EOF) { ans=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; } v=sum[n]/2; dfs(n,ans); printf("%d\n",sum[n]-2*ans); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/l15738519366/article/details/47612905