![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
算法学习
全 洛
Program = data structure + algorithm
展开
-
(力扣)5. 最长回文子串 C++(中心扩散法)解题击败100%用户
5. 最长回文子串示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成解题思路:中心扩散法我们是以每一个字符为中心,往两边扩散,来求最长的回文子串。我们来思考这样一个问题,如果是单.原创 2021-09-17 19:07:22 · 356 阅读 · 0 评论 -
BFS 还不会吗,那还学个锤子的算法。
简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。 如果所有节点均被访问,则算法中止。 **BFS同样属于盲目搜索。**一般用队列数据结构来辅助实现BFS算法。原创 2020-04-28 17:29:05 · 600 阅读 · 0 评论 -
回溯算法笔记,并解决N皇后问题(Python实现)
白话:回溯法可以理解为通过选择不同的岔路口寻找目的地,一个岔路口一个岔路口的去尝试找到目的地。如果走错了路,继续返回来找到岔路口的另一条路,直到找到目的地。原创 2020-04-24 16:41:25 · 4841 阅读 · 0 评论 -
贪心(婪)算法之哈夫曼编码(Huffman code)学习笔记(Python版)
前言(可省略。):哈夫曼编码可以很有效的压缩数据:通常可以节省 20%~90%的空间,具体压缩率依赖于数据的特性。我们将待压缩数据看做字符序列。根据每个字符的出现频率,哈夫曼贪心算法构造出字符的最优二进制表示。假定我们希望压缩一个10个字符的数据文件。下表给出了文件中所出现的字符和它们的出现频率。也就是说,文件中只出现了6个不同字符,其中字符a出现了45 000次。abcd...原创 2020-04-16 17:25:54 · 2608 阅读 · 2 评论 -
这下终于知道-贪心算法-是什么了吧!
贪心算法贪心算法又叫贪婪算法,顾名思义就是问题求解时,总是做出在当前看来是最好的选择,即不保证全局最优,仅是在某种意义上的局部最优解。贪心算法设计的关键是贪心策略的选择。贪心算法是自顶向下计算,通过贪心选择,将原问题规约为子问题。贪心算法具有两大基本要素:1、贪心选择贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪...原创 2020-04-07 16:54:32 · 1788 阅读 · 1 评论 -
动态规划进阶篇详解——习题篇
动态规划进阶篇——习题篇一、能用动规解决的问题的特点1.问题具有最优子结构性质。2.无后效性。二、动态规划解题的一般思路1. 将原问题分解为子问题2. 确定状态3. 确定一些初始状态(边界状态)的值二、习题解答1.数字三角形普通递归程序如下(超时):改进递归变递推空间优化2.最长上升子序列3.最大公共子序列4.最佳加法表达式使用字符串模拟大数运算通过大数类运算符重载实现大数运算5.Help Jim...原创 2020-04-03 12:09:50 · 749 阅读 · 0 评论 -
微信红包程序,发吉利数字红包
程序设计题目:微信红包程序:给定一个钱数m,发红包人数n,其中10<=m, n<=200将钱数拆成几个指定的吉利数(如1.66,1.68, 16.8,1.78,17.8,1.88,18.8,1.99,5.20,0.66,6.6,6.66,0.08,0.88,8.8,8.88,0.99,9.9,9.99)并发出,要求要发出n个红包,分布比较均匀。解题思路:1.我们可以先设置一组吉利...原创 2020-03-31 17:32:42 · 3310 阅读 · 3 评论 -
教你彻底学会递归——《进阶篇》
教你彻底学会递归——《进阶篇》通过上一篇,我们已经基本了解了递归的思想,以及递归求解问题的方法。因此这一篇文章,我将通过一些经典的通过递归算法实现的实例来更深入的了解递归算法。 汉诺塔问题 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放...原创 2020-03-29 14:36:08 · 927 阅读 · 0 评论 -
教你彻底学会递归——《入门篇》
递归——《入门篇》一、递归的基本思想1.什么是递归2.总体思想3.推广二、递归与枚举的区别三、递归的三个要点1.递归式2.递归出口3.界函数四、求阶乘的递归程序五、递归解决问题的关键一、递归的基本思想1.什么是递归对于递归这样的一个基本的算法而言的话呢在程序设计当中, 其实它就是一个函数,在这个函数当中直接或者间接的调用其自身。 这样的表现形式或者说一种操作的方式呢,我们就称之为叫做递归。...原创 2020-03-29 13:12:58 · 2135 阅读 · 0 评论 -
分治法——快速排序 (python解答)
算法设计与分析分治法快速排序快速排序动画演示def quicksort(arr,left = None,right = None): #快速排序 arr-数列,lerf-数列最左元素下标,right-数列最右元素下标 left = 0 if not isinstance(left,int) else left #左下标以整数形式显示 right = len(ar...原创 2020-03-21 17:54:59 · 1533 阅读 · 3 评论 -
分治算法——归并排序(python解答)
算法设计与分析分治法——归并排序归并排序操作过程:def mergesort(seq): #归并排序 if len(seq) <= 1: return seq mid = int(len(seq) / 2) # 将列表分成更小的两个列表 # 分别对左右两个列表进行处理,分别返回两个排序好的列表 left = mergesort...原创 2020-03-20 15:23:56 · 633 阅读 · 0 评论