求助!本题解法可不可以这样!
查看原帖
求助!本题解法可不可以这样!
1468942
Iwillwininthistime楼主2025/6/28 08:13

关于我在这题中使用回溯导致空间爆炸的问题

代码如下,感谢dalao的指点,orzorzorz

#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int>res;
void dfs(vector<int>&vec,int sum,int st)
{
	res.push_back(sum);
	if(st>=vec.size()) return;
	for(int i=st;i<vec.size();i++)
	{
		sum+=vec[i];
		
		dfs(vec,sum,i+1);
		
		sum-=vec[i];
	}
}
signed main()
{
	int tmp;
	vector<int>vec;
	int x=2;
	while(cin>>tmp)
	{
		vec.push_back(tmp);
	}
	dfs(vec,0,0);
	int summer=0;
	for(int i=0;i<res.size();i++)
	{
		summer+=res[i];
	}
	cout<<summer;
	return 0;
}
2025/6/28 08:13
加载中...