1 条题解
-
0
C :
#include<stdio.h> #include<math.h> int n; int min; int sum[2]; int weight[25]; int total; void get_next(int cur, int n, int *a) { int i; if(cur == n) { if(min > (int)fabs(sum[0] - sum[1])) min = (int)fabs(sum[0] - sum[1]); } else { for(i = 0; i < 2; i++) { sum[i] += a[cur]; get_next(cur+1, n, a); sum[i] -= a[cur]; } } } int main() { int i; while(scanf("%d", &n) != EOF) { total = 0; for(i = 0; i < n; i++) { scanf("%d", &weight[i]); total += weight[i]; } min = 200001; sum[0] = sum[1] = 0; get_next(0, n, weight); printf("%d\n", min); } return 0; }
C++ :
#include<stdio.h> #include<string.h> int main() { int n,i,j,m,N; while(scanf("%d",&n)!=EOF) { bool a[10000*20+10]={0}; int b[10001],sum=0;; for(i=0;i<n;i++) { scanf("%d",&b[i]); sum+=b[i]; } for(j=0,a[0]=1;j<n;j++) for(i=sum/2;i>=b[j];i--) if(a[i-b[j]]) a[i]=1; for(i=sum/2;!a[i];i--); printf("%d\n",sum-i*2); } return 0; }
- 1
信息
- ID
- 774
- 时间
- 3000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者