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