输出整数分解的全部解,解要从大到小的输出
Example:
input: n = 12
output:
12*1
6*2
4*3
Example:
input: n = 12
output:
12*1
6*2
4*3
3*2*2
void Impl(vector<vector<int> >& res, vector<int>& rec, int num, int upperLimit)
{
if(upperLimit == 1)
{
res.push_back(rec);
return;
}
for(int i=upperLimit;i>=2;--i)
{
if(num % i == 0)
{
rec.push_back(i);
Impl(res,rec,num/i,min(i,num/i));
rec.pop_back();
}
}
}
vector<vector<int> > f(int n)
{
vector<vector<int> > res;
if(n <= 0)
return res;
vector<int> rec;
//handle special case of n*1
rec.push_back(n);
rec.push_back(1);
res.push_back(rec);
rec.clear();
Impl(res,rec,n,n/2);
return res;
}