Bootstrap

(回溯法)leetcode39组合总和

第一个2开头,下面的子节点的集合元素均为2,5,3

但是在5开头,下面的子节点集合元素均为5,3

带着这个图的思路确定i和index的传递值

backtracking(i, nums,8,sum);用的是i而不是i+1

// ConsoleApplication3.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;

vector<int>combine;
vector<vector<int>>ans;
void backtracking(int index, vector<int>& nums,int target,int sum)
{
	 
	if (sum>target)
	{
		
		return;
}
	if (sum == target)
	{
		ans.push_back(combine);
		return;
	}

	for (int i = index;i < nums.size();i++)
	{

		combine.push_back(nums.at(i));
		sum += nums[i];
		backtracking(i, nums,8,sum);
		combine.pop_back();
		sum -= nums[i];
	}

}

int main()
{
	vector<int>nums = { 2,3,5};
	int sum = 0;
	backtracking(0,nums,8,sum);
	for (int i = 0;i < ans.size();i++)
	{
		for (auto& n :ans[i])
		{
			cout << n;
		}
		cout << endl;
	}

	return 0;
}

;