6 solutions

  • 1
    @ 2026-2-26 16:03:12

    枚举子集写法:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=25;
    int v[N]; 
    int main(){
    	int n,V;
    	cin>>n>>V;
    	for(int i=0;i<n;i++){
    		cin>>v[i];
    	}
    	int res=0;
    	for(int i=1;i<1<<n;i++){
    		int s=0;
    		for(int j=0;j<n;j++){
    			if(i>>j&1){
    				s+=v[j];
    			}
    		}
    		if(s<=V){
    			res=max(res,s);
    		}
    	}
    	cout<<res;
    	return 0;
    }
    

    Information

    ID
    229
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    79
    Accepted
    22
    Uploaded By