2 条题解

  • 0
    @ 2025-7-22 20:13:29
    #include<bits/stdc++.h>
    using namespace std;
    int n,b,res;
    int a[250+5];
    int best=10000000000;
    void solve(int num,int sum){
    	if(sum>=b && sum<best){
    		best=sum;
    	}
    	if(num==n || sum>=best){
    		return;
    	}
    	solve(num+1,sum+a[num]);
    	solve(num+1,sum);
    	res=best-b;
    }
    int main()
    {
    	cin>>n>>b;
    	for(int i=0;i<n;i++){
    		cin>>a[i];
    	}
    	solve(0,0);
    	cout<<res;
    	return 0;
    }
    
    
    

    提交记录

    • 0
      @ 2025-7-22 20:10:16
      #include <iostream>
      using namespace std;
      int a[251];
      int n,b;
      int best=1500000;
      void f(int num,int sum){
      	if(sum>=b&&sum<best) best=sum;
      	if(num==n||sum>=best) return;
      	f(num+1,sum+a[num]);
      	f(num+1,sum);
      }
      int main()
      {
      	cin>>n>>b;
      	for(int i=0;i<n;i++)
      		cin>>a[i];
      	f(0,0);
      	cout<<best-b;
          return 0;
      }
      
      

      image.png image.png

    • 1

    信息

    ID
    617
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    30
    已通过
    13
    上传者