本题考察的是回溯算法,可以使用DFS解决问题。 C++版本 #include <iostream> #include <vector> using namespace std; int getDigitSum(int num){ int sum = 0; while(num > 0){ sum += ...
分类:
其他好文 时间:
2020-07-17 11:28:13
阅读次数:
48
递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子,它 ...
分类:
编程语言 时间:
2020-07-14 00:42:37
阅读次数:
70
崩溃的位置是在main.cpp return a.exec(); 通过代码回溯和按钮点击位置查看到一个头文件 中的 char str [100] 在lineedit->settext显示崩溃;但是经过反复看,char str[]里边的内容并没有数组越界。 先修改了一下 char str [100] ...
分类:
其他好文 时间:
2020-07-13 19:56:04
阅读次数:
79
问题描述 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2: 输入: s1 = "aabcc", s2 = "dbbca" ...
分类:
其他好文 时间:
2020-07-13 09:22:58
阅读次数:
108
传送门 给定一个没有重复数字的数列,输入该数列的全排列。 这是一道回溯法(递归思想)的题目,可以通过递归来枚举所有的排列组合,为了避免重复使用某个数字,可以用flag标记每个数字是否使用。 代码方面,回溯法的框架如下,细品: result = [] def backtrack(路径, 选择列表): ...
分类:
其他好文 时间:
2020-07-12 16:57:15
阅读次数:
80
401. 二进制手表 描述: 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。 每个 LED 代表一个 0 或 1,最低位在右侧。 思路:递归回溯法。 402. 移掉K位数字 描述: 思路:维护一个栈。来一个数入栈,当栈顶元素大于准备进栈的, ...
分类:
其他好文 时间:
2020-07-11 22:37:37
阅读次数:
80
算法的开章,递归是实现其他高级算法如深度优先、分治等的基础; 碰到一个题目就找它的重复性,重复性有最近的重复性(根据重复性怎么构造怎么分解-->分治、回溯等办法,本质就是递归),或者最优重复性(即动态规划)。 本质上就是找它的重复性。 找重复性以及分解问题,最后组合每个子问题的结果。 1. 分治 D ...
分类:
编程语言 时间:
2020-07-11 19:23:28
阅读次数:
48
题目来源:leetcode131 分隔回文串 题目描述: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 解题思路: 回溯,见代码。 class Sol ...
分类:
其他好文 时间:
2020-07-11 12:51:38
阅读次数:
66
1:递归函数是什么? 递归函数其实就是A函数在调用的过程中,又调用了自己。 (可以理解为我们在执行A的子代码的过程中又调用了自己)举个列子: 2:递归函数的两个知识点: 2.1:回溯 2.2:递推 举个列子: 比如我问A今年多大,A说我比B大10岁,然后我问B多大,B说我比C大10随,然后我又问C多 ...
分类:
编程语言 时间:
2020-07-10 00:02:02
阅读次数:
80
dfs找到解,return true, 不需要继续找了,不然回溯将恢复整个棋盘。 或者, 记录下该解,继续找下一个解(如果存在多解, 但一般不需要)。 import java.util.*; public class Main { static int[][] grid; static boolea ...
分类:
其他好文 时间:
2020-07-09 12:27:26
阅读次数:
52