首页 > 编程语言 >day24 - 回溯算法part01

day24 - 回溯算法part01

时间:2023-09-07 16:48:19浏览次数:46  
标签:part01 day24 int 算法 result 回溯 path

回溯算法理论基础

 

77. 组合

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;

    void dfs(int n, int k, int start){
        if(path.size() == k){
            result.push_back(path);
            return;
        }

        for(int i=start; i<=n; i++){
            path.push_back(i);
            dfs(n, k, i+1);
            path.pop_back();
        }
    }

    vector<vector<int>> combine(int n, int k) {
        dfs(n, k, 1);
        return result;
    }
};

 

标签:part01,day24,int,算法,result,回溯,path
From: https://www.cnblogs.com/zqh2023/p/17685323.html

相关文章

  • day1 - 数组part01
    力扣704.二分查找思路:假如有n个数,数组下标就是0到n-1,那么第一次从n/2开始找如果这个数比目标数大,说明目标数在左边,于是从0到中间边界找。如果这个数比目标数小,说明目标数在右边,于是从中间边界+1到n-1找。为了明确中间边界是多少,举个例子: 假如数组是:0,1,3,5,6,7,8;target......
  • 二叉树-257二叉树的所有路径带回溯思想
    257. 二叉树的所有路径1#Definitionforabinarytreenode.2#classTreeNode:3#def__init__(self,val=0,left=None,right=None):4#self.val=val5#self.left=left6#self.right=right7classSolution:8......
  • [代码随想录]Day33-动态规划part01
    题目:509.斐波那契数思路:动规五部曲:这里我们要用一个一维dp数组来保存递归的结果确定dp数组以及下标的含义dp[i]的定义为:第i个数的斐波那契数值是dp[i]确定递推公式为什么这是一道非常简单的入门题目呢?因为题目已经把递推公式直接给我们了:状态转移方程dp[i]=dp[i-......
  • 回溯(backstracking)
    回溯(抽象成树型结构、一般无返回值backtracking)1.理论基础回溯和递归相辅相成一般递归函数下面的部分就是回溯的逻辑默认是纯暴力(后续可以剪枝)应用:组合【没有顺序】切割子集排列【有顺序】棋盘N皇后解数独回溯法都可以抽象为一个树型结构树的宽度:集合大......
  • LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝
     classSolution:defcombine(self,n:int,k:int):nums=[x+1forxinrange(n)]res,ans=[],[]defdfs(nums:list[int]):iflen(ans)==k:ans_copy=ans.copy()#复制,避免ans数组改变使res跟着改变......
  • 【LeetCode回溯算法#12】二叉树的直径,树形dp的前置内容(使用dfs)
    二叉树的直径给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • [代码随想录]Day27-贪心算法part01
    题目:455.分发饼干思路:贪心,思路是尽量先给胃口值小的分,饼干也是从小的开始分:如果饼干满足了胃口值,结果+1换下一个人,下一个饼干如果饼干满足不了胃口值,换下一个饼干(满足不了胃口值小的一定满足不了大的)代码:funcfindContentChildren(g[]int,s[]int)int{res:=......
  • [代码随想录]Day26-回溯算法part06
    题目:332.重新安排行程思路:其实这里已经是图的部分了,回溯应该也可以。Hierholzer算法解决欧拉问题代码:funcfindItinerary(tickets[][]string)[]string{var(m=map[string][]string{}res[]string)for_,ticket:=rangeticket......
  • [代码随想录]Day25-回溯算法part05
    题目:491.递增子序列思路:核心问题——同层去重,这一题不能够重新排序因此不可以用i>index&&nums[i]==nums[i-1]来去重,而是每一层开一个map来判断该数是否出现过代码:var(res[][]intpath[]int)funcfindSubsequences(nums[]int)[][]int{res=make(......
  • day14 - 二叉树part01
    144. 二叉树的前序遍历详解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullp......