zoukankan      html  css  js  c++  java
  • [Locked] Factor combinations

    Numbers can be regarded as product of its factors. For example,

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

    Write a function that takes an integer n and return all possible combinations of its factors.

    Note: 

    1. Each combination‘s factors must be sorted ascending, for example: The factors of 2 and 6 is [2, 6], not [6, 2].
    2. You may assume that n is always positive.
    3. Factors should be greater than 1 and less than n.

    Examples: 
    input: 1
    output: 

    []
    

    input: 37
    output: 

    []
    

    input: 12
    output:

    [
      [2, 6],
      [2, 2, 3],
      [3, 4]
    ]
    

    input: 32
    output:

    [
      [2, 16],
      [2, 2, 8],
      [2, 2, 2, 4],
      [2, 2, 2, 2, 2],
      [2, 4, 4],
      [4, 8]
    ]

    分析:

      因子需要枚举出来,直接DFS

    代码:

    void dfs(int target, int start, vector<int> item, vector<vector<int> > &fc) {
        if(target == 1) {
            //去除num = num ( * 1)的分解情况
            if(item.size() > 1)
                fc.push_back(item);
            return;
        }
        for(int i = start; i <= target; i++) {
            if(target % i == 0) {
                item.push_back(i);
                dfs(target / i, i, item, fc);
                item.pop_back();
            }
        }
        return;
    }
    vector<vector<int> > factor(int num) {
        vector<int> item;
        vector<vector<int> > fc;
        dfs(num, 2, item, fc);
        return fc;
    }
  • 相关阅读:
    GUI 之 JDialog弹窗
    GUI Swing 之 JFrame窗体
    GUI 键盘监听事件
    GUI 窗口监听事件
    GUI 鼠标监听事件,模拟画图工具
    shell编程
    Ubuntu20.04 Linux初识
    rlwrap的使用
    5个相见恨晚的Linux命令,每一个都非常实用
    Bash初识与常用命令
  • 原文地址:https://www.cnblogs.com/littletail/p/5216493.html
Copyright © 2011-2022 走看看