7 条题解

  • 1
    @ 2026-8-11 11:32:23
      #include<bits/stdc++.h>
    using namespace std;
    const int N=25;
    int c[N],n,w,a[N],res=N;
    void dfs(int i,int j){
    	if(i>n){
    		res=min(res,j);
    	}
    	if(j>=res)return;
    	for(int k=1;k<=j;k++){
    		if(a[k]+c[i]>w)continue;
    		a[k]+=c[i];
    		dfs(i+1,j);
    		a[k]-=c[i];
    	}
    	a[j+1]+=c[i];
    	dfs(i+1,j+1);
    	a[j+1]-=c[i];
    }
    int main(){
    	cin>>n>>w;
    	for(int i=1;i<=n;i++){
    		cin>>c[i];
    	}
    	dfs(1,0);
    	cout<<res;
    	return 0;
    }
    

    信息

    ID
    76
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    548
    已通过
    146
    上传者