目录
牛客_求和(递归深搜)
解析代码
牛客_求和(递归深搜)
求和_好未来笔试题_牛客网
解析代码
递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int a = 0;
while(cin >> a)
{
cout << a << " = ";
vector<int> arr;
for(int i = 2; i <= sqrt(a); ++i)
{
while(a % i == 0)
{
// cout << i << " * ";
arr.push_back(i);
a /= i;
}
}
if(a != 1) // 说明是素数
{
// cout << a << " * ";
arr.push_back(a);
}
int sz = arr.size();
for(int i = 0; i < sz; ++i)
{
cout << arr[i];
if(i != sz - 1)
cout << " * ";
}
cout << endl;
}
return 0;
}