求调
查看原帖
求调
569422
Wzc_DL24JP楼主2024/8/5 21:40

我的程序

#include<bits/stdc++.h>
using namespace std;
const int MaxN=1005;

int a[MaxN];
int b[MaxN];
int n,c;
long long ans=0;
void search(int idx,long long vl)//在n~idx中选择的砝码总重vl idx未被选中
{
    if(vl>c)
    {
        return ;
    }
    if(vl+b[idx-1]<=c)
    {
        ans=max(ans,vl+b[idx-1]);//有前缀和直接加 不用再考虑别的 
        return ;
    }
    ans=max(ans,vl);
    for(int i=1;i<idx;i++)
    {
            search(i,vl+a[i]);
    }
}
int main()
{
    cin>>n>>c;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=b[i-1]+a[i];
    if(b[i]==c){cout<<c;return 0;} 
	}
    
    search(n+1,0);
    cout<<ans<<"\n";
    return 0;
}

和第一篇题解除了变量名几乎一样 但会WA4个点 但题解能A

2024/8/5 21:40
加载中...