蒟蒻不太理解。。。
查看原帖
蒟蒻不太理解。。。
321647
阿炜楼主2022/9/28 19:33

提问为什么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;
}
2022/9/28 19:33
加载中...