LeetCode:组合求和III之回溯法

题目

题目链接

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

只使用数字1到9
每个数字 最多使用一次 
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

题目图解

**加粗样式
**

cpp代码

class Solution {
public:
    vector<int> nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    //回溯
    void dfs(vector<vector<int>>& ans, vector<int>& path, int k, int target, int idx)
    {
        if (path.size() == k && target != 0)
            return;

        if (target == 0 && path.size() == k)
        {
            ans.push_back(path);
            return;
        }

        for (int i = idx; i < nums.size(); ++i)
        {
            //剪枝:如果当前的值不满足条件,则后面的数字就没有必要继续了
            if (target - nums[i] < 0)
            {
                break;
            }
            path.push_back(nums[i]);
            dfs(ans, path, k, target - nums[i], i + 1);
            //回溯
            path.pop_back();
        }
    }

    vector<vector<int>> combinationSum3(int k, int n)
    {
        vector<vector<int>> ans;
        vector<int> path;
        dfs(ans, path, k, n, 0);
        return ans;
    }
};

相关推荐

  1. Leetcode 90.子集II - Subset II - Python - 回溯

    2024-04-22 21:54:05       45 阅读
  2. 组合总和III(Lc216)——剪枝+回溯

    2024-04-22 21:54:05       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 21:54:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 21:54:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 21:54:05       87 阅读
  4. Python语言-面向对象

    2024-04-22 21:54:05       96 阅读

热门阅读

  1. 【Python-第三方库】cv2

    2024-04-22 21:54:05       44 阅读
  2. All in One mini主机搭建全屋主路由方案

    2024-04-22 21:54:05       116 阅读
  3. 程序员最好的笔记Typora使用教程

    2024-04-22 21:54:05       51 阅读
  4. 学习总结!

    2024-04-22 21:54:05       35 阅读
  5. 每天一个数据分析题(二百七十)

    2024-04-22 21:54:05       44 阅读
  6. Android 混淆模板

    2024-04-22 21:54:05       28 阅读
  7. redis常用5大数据类型

    2024-04-22 21:54:05       36 阅读
  8. 深度学习——Transformer的理解整理

    2024-04-22 21:54:05       39 阅读