第一个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;
}