80分 #5TLE
查看原帖
80分 #5TLE
758792
Sunshine_su楼主2023/9/30 11:34
#include<iostream>
#include<algorithm>
using namespace std;
int a[32],v[32],n,m,minx=9e9;
bool check()
{
    int sum=0;
    for(int i=1;i<=n;i++) if(a[i]==1) sum+=v[i]; //被选中就加上体积
    return sum<=m; //有没有超过容积
}
void dfs(int step)
{
    if(step>n)
    {
        if(check()) //没有超过
        {
            int sum=0;
            for(int i=1;i<=n;i++) if(a[i]==1) sum+=v[i];
            minx=min(minx,m-sum);  
        }
        return ;
    }
    a[step]=0; //不装
    dfs(step+1);
    a[step]=1; //装
    dfs(step+1);
}
int main()
{
    cin>>m>>n;
    for(int i=1;i<=n;i++) cin>>v[i];
    dfs(1);
    cout<<minx;
    return 0;
} 
2023/9/30 11:34
加载中...