6 条题解

  • 0
    @ 2026-5-20 19:43:27
    
    ```cpp
    #include<bits/stdc++.h>
    using namespace std;
    int n,w;
    int cat[20],cab[20],ans=20;
    void dfs(int u,int k) {
    //	if(u==n){//判定所有小猫都上车了 
    //		ans=min(ans,k);//找最小的次数 
    //		return;
    //	}
    	if(k>ans)return ;
    	if(u==n){
    		ans=k;
    		return;
    	}
    	for(int i=0;i<k;i++){
    		if(cab[i]+cat[u]<=w){
    			cab[i]+=cat[u];
    			dfs(u+1,k);
    			cab[i]-=cat[u];
    		}
    	}
    	cab[k]=cat[u];
    	dfs(u+1,k+1);
    	cab[k]-=cat[u];
    }
    int main(){ 
    	cin>>n>>w;
    	for(int i=0;i<n;i++)cin>>cat[i];
    	sort(cat,n+cat,greater<int>());
    	dfs(0,0);
    	cout<<ans;
    	return 0;
    } 
    
    

    信息

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