提问为什么dfs要这么写
for(int i=1;i<cut;i++)
dfs(i,x+a[i]);
一开始我写的dfs(int x)结果输出的貌似是天平的最大承载值
想了一节晚自习没想出来(我好菜qqq)
#include<iostream>
#include <algorithm>
using namespace std;
long long n,c;
long long ans;
long long sum[1005],a[1005];
void dfs(int cut,long long x)
{
if(sum[cut-1]+x<=c)
{
ans=max(ans,sum[cut-1]+x);
return;
}
if(x>c)
return ;
ans=max(ans,x);
for(int i=1;i<cut;i++)
dfs(i,x+a[i]);
return ;
}
int main()
{
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
dfs(n+1,0);
cout<<ans;
return 0;
}