42pts,995!!!!!
查看原帖
42pts,995!!!!!
1353733
XDuanZai楼主2024/12/8 20:17

42pts,995!!!!!!

#include<iostream>
#include<algorithm>
using namespace std;
int ans=1;
int a[25],n,w,cnt[25];
bool k(int a,int b){
    return a>b;
}
void dfs(int nc,int ls){
    if(ls>=ans) return ;
    if(nc==n+1){
        ans=min(ans,ls);
        return ;
    }
    for(int i=1;i<=ls;i++){
        if(cnt[i]+a[nc]<=w){
            cnt[i]+=a[nc];
            dfs(nc+1,ls);
            cnt[i]-=a[nc];
        }
    }
    cnt[ls+1]=a[nc];
    dfs(ls+1,nc+1);
    cnt[ls+1]-=a[nc];
}
int main(){
    cin>>n>>w;
    ans=n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n,k);
    dfs(1,0);
    cout<<ans;
    return 0;
}
2024/12/8 20:17
加载中...