前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 254. 因子的组合(回溯)*

LeetCode 254. 因子的组合(回溯)*

作者头像
Michael阿明
发布2020-07-13 14:42:45
8500
发布2020-07-13 14:42:45
举报

1. 题目

整数可以被看作是其因子的乘积。

代码语言:javascript
复制
例如:

8 = 2 x 2 x 2;
  = 2 x 4.

请实现一个函数,该函数接收一个整数 n 并返回该整数所有的因子组合。

代码语言:javascript
复制
注意:
你可以假定 n 为永远为正数。
因子必须大于 1 并且小于 n。

示例 1:
输入: 1
输出: []

示例 2:
输入: 37
输出: []

示例 3:
输入: 12
输出:
[
  [2, 6],
  [2, 2, 3],
  [3, 4]
]

示例 4:
输入: 32
输出:
[
  [2, 16],
  [2, 2, 8],
  [2, 2, 2, 4],
  [2, 2, 2, 2, 2],
  [2, 4, 4],
  [4, 8]
]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/factor-combinations 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考题解区大力王

代码语言:javascript
复制
class Solution {
	vector<vector<int>> ans;
public:
    vector<vector<int>> getFactors(int n) {	
    	return dfs(n, 2);
    }
    vector<vector<int>> dfs(int n, int div)//从div开始找因子
    {
    	vector<vector<int>> factor, temp;
    	for(int i = div; i*i <= n; ++i)
    	{
    		if(n%i == 0)
    		{
    			factor.push_back({n/i,i});//因子
    			temp = dfs(n/i, i);//一个较大的因子,从较小的因子开始继续分割
    			for(auto f : temp)// n/i 分割后的因子组合f
	    		{
	    			f.push_back(i);//加上因子 i
	    			factor.push_back(f);//完整的组合放入答案
	    		}	
            }  		
    	}
    	return factor;//返回答案
    }
};

0 ms 7.1 MB

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档