[LeetCode] 77. 组合

题目描述:

给定两个整数 nk,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

复制代码
输入:n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

示例 2:

复制代码
输入:n = 1, k = 1
输出:[[1]]

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

题目链接:

. - 力扣(LeetCode)

解题主要思路:

很简单的一道dfs,确定要递归结速条件,是否需要剪枝,什么时候进行递归,如何回溯即可。

解题代码:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> ret;
    vector<int> path;
    int n, k;
    vector<vector<int>> combine(int _n, int _k) {
        n = _n, k = _k;
        dfs(1);
        return ret;
    }
    void dfs(int pos)
    {   
        // 结速条件
        if (path.size() == k) {
            ret.push_back(path);
            return;
        }

        for (int i = pos; i <= n; ++i) {
            path.push_back(i);  
            dfs(i+1);  // 递归
            path.pop_back();  // 回溯
        }
    }
};
相关推荐
2301_819414308 小时前
C++与区块链智能合约
开发语言·c++·算法
Zaly.8 小时前
【Python刷题】LeetCode 1727 重新排列后的最大子矩阵
算法·leetcode·矩阵
不想看见4048 小时前
Valid Parentheses栈和队列--力扣101算法题解笔记
开发语言·数据结构·c++
老约家的可汗8 小时前
C/C++内存管理探秘:从内存分布到new/delete的底层原理
c语言·c++
做怪小疯子8 小时前
蚂蚁暑期 319 笔试
算法·职场和发展
天赐学c语言8 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
计算机安禾8 小时前
【C语言程序设计】第37篇:链表数据结构(一):单向链表的实现
c语言·开发语言·数据结构·c++·算法·链表·蓝桥杯
啊哦呃咦唔鱼8 小时前
LeetCode hot100-73 矩阵置零
算法
阿贵---8 小时前
C++构建缓存加速
开发语言·c++·算法
波特率1152009 小时前
C++当中is-a(继承)与has-a(成员对象)的辨析与使用指南(包含实际工程当中的使用示例)
c++·ros·串口通信