题目:
利用递归算法输出正整数和为n的所有不增的正整数和式。例如当n=5时,不增的和式如下:
5=5
5=4+1
5=3+2
5=3+1+1
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
回溯法,递增子序列+组合求和
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int> > res;
vector<int> path;
void output(vector<int>& p,int target) {
cout << target << " = ";
for (int i = 0; i < p.size(); ++i) {
cout << p[i];
if (i != p.size() - 1) {
cout << " + ";
}
}
cout << endl;
}
void backtracking(int n,int sum) {
if (sum > n) {
return;
}
if (sum == n) {
output(path, n);
return;
}
for (int i = n; i >= 1; --i) {
if (!path.empty()&&i > path.back()) {
continue;
}
sum += i;
path.push_back(i);
backtracking(n, sum);
sum -= i;
path.pop_back();
}
}
int main() {
backtracking(5,0);
return 0;
}