牛客对应题目链接:求和__牛客网 (nowcoder.com)
一、分析题目
递归型枚举,要分选和不选两种情况。其次要注意,这里的两个判断条件的位置会影响最终结果。
二、代码
#include <iostream>
#include <vector>
using namespace std;
int n, m;
int sum;
vector<int> res;
void dfs(int x)
{
if(sum==m)
{
for(auto e : res)
cout << e << ' ';
cout << endl;
return;
}
if(sum>m || x>n) return;
sum+=x;
res.push_back(x);
dfs(x+1);
res.pop_back();
sum-=x;
dfs(x+1);
}
int main()
{
cin >> n >> m;
dfs(1);
return 0;
}