记录编号 571836 评测结果 ATTTTTTTTT
题目名称 送礼物 最终得分 10
用户昵称 Gravatar康尚诚 是否通过 未通过
代码语言 C++ 运行时间 36.000 s
提交时间 2022-06-25 14:42:22 内存使用 5.16 MiB
显示代码纯文本
    #include<bits/stdc++.h>
    using namespace std;
    unsigned long long g[50],w,mx=0;//各物品重量,重量上限,最佳方案重量 
    int n,vis[50];
    int dfs(unsigned long long h,int num,int id)//当前总重,当前个数,当前试图放下的礼物编号 
    {
        h+=g[id];
    //    cout<<id<<" "<<num<<" "<<h<<endl;
        if(h>w)
        {
            mx=max(mx,h-g[id]);
            return 0;
        } 
        if(num==n)
        {
            mx=max(mx,h);
            return 0;
        }
    //    if(h==w)
    //    {
    //        mx=h;
    //        return 0;
    //    }
        for(int i=1;i<=n;i++)
        {
            if(vis[i]==0)
            {
                vis[i]=1;
                dfs(h,num+1,i);
                vis[i]=0;
            }
        }
        return 0;
    } 
    int main()
    {
        freopen("giftgiving.in","r",stdin);
        freopen("giftgiving.out","w",stdout);
        g[0]=0;
        memset(vis,50,0);
        cin>>w>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>g[i];
        } 
        dfs(0,0,0);
        cout<<mx;
     }