博客
关于我
4 组合
阅读量:493 次
发布时间:2019-03-07

本文共 951 字,大约阅读时间需要 3 分钟。

组合问题,即给定两个整数n和k,返回1到n中所有可能的k个数的组合。以下是解决方案:

组合问题解决方案

Java实现代码

import java.util.ArrayList;
import java.util.List;
public class Solution {
public List
> combine(int n, int k) {
List
> son = new ArrayList<>();
List
parent = new ArrayList<>();
dfs(1, n, k);
return parent;
}
public void dfs(int cur, int n, int k) {
if (cur == n + 1) {
if (son.size() == k) {
parent.add(new ArrayList(son));
}
return;
}
son.add(cur);
dfs(cur + 1, n, k);
son.remove(son.size() - 1);
dfs(cur + 1, n, k);
}
}

代码解析

  • 组合递归算法:该算法使用深度优先搜索(DFS)来生成所有可能的k数组合。
  • 回溯技巧:通过在每一步添加元素后回溯(剪切)来确保生成所有可能的组合。
  • 递归终止条件:当当前索引cur超过n时,检查当前组合是否满足k的条件。
  • 以下是代码运行示例:

    示例输出

    combine(4, 2)返回:
    [
    [2, 4],
    [3, 4],
    [2, 3],
    [1, 2],
    [1, 3],
    [1, 4]
    ]

    这个解决方案高效且简洁,能够处理最大的n值和组合数。

    转载地址:http://uzzcz.baihongyu.com/

    你可能感兴趣的文章
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>