1 条题解

  • 0
    @ 2025-2-14 21:20:40

    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
    上传者