2 条题解

  • 0
    @ 2025-10-8 16:48:23
    #include <bits/stdc++.h>
    using namespace std;
    int n, m, a[250], ans, p;
    void dfs(int sa, int sb, int k)//始终坚持sa不超过m 
    {
        if (ans > abs(sa - m)) { ans = abs(sa - m); p = sa; } 
        if (ans > abs(sb - m)) { ans = abs(sb - m); p = sb; } 
         
        if (k <= n)
        {
            if (sa + a[k] <= m) dfs(sa + a[k], sb, k + 1);
            dfs(sa, sb + a[k], k + 1);
        }
    }
    int main()
    {
        scanf("%d%d", &n, &m);
        for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
        ans = 999999999;
        dfs(0, 0, 1);
        printf("%d\n", p);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:14
      #include<bits/stdc++.h>
      using namespace std;
      int n,m,a[250],ans,p;
      void dfs(int sa,int sb,int k)//始终坚持sa不超过m 
      {
          if(  ans  >  abs(sa-m)  ){  ans=abs(sa-m);  p=sa;} 
          if(  ans  >  abs(sb-m)  ){  ans=abs(sb-m);  p=sb;} 
           
          if(k<=n)
          {
              if(sa+a[k]<=m)dfs(sa+a[k],   sb    ,  k+1);
              dfs(sa     , sb+a[k] ,  k+1);
          }
      }
      int main()
      {
          scanf("%d%d",&n,&m);
          for(int i=1;i<=n;i++) scanf("%d",&a[i]);
          ans=999999999;
          dfs(0,0,1);
          printf("%d\n",p);
          return 0;
      }
      • 1

      信息

      ID
      83
      时间
      1000ms
      内存
      128MiB
      难度
      7
      标签
      递交数
      206
      已通过
      55
      上传者