算法
文章平均质量分 95
沉梦昂志1995
沉梦昂志
展开
-
算法学习(二)贪心算法
贪心算法一、基本思想 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。...原创 2019-08-09 15:31:55 · 1121 阅读 · 0 评论 -
算法学习(一)回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的...原创 2019-08-08 15:27:09 · 379 阅读 · 0 评论 -
算法导论(一)分治策略与递归式求解
前言 之前学习算法都是在LeetCode或牛客上刷题,从没有系统的学习过算法的底层知识,所以准备以《算法导论》为教材,从头再把算法的相关知识总结复习一遍,真正的学习方法而不是只会做题 。基本思想 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可...原创 2019-08-19 23:19:08 · 743 阅读 · 0 评论 -
算法导论(三)字符串匹配
字符串匹配方法对于在编辑文本程序时,能极大的提升响应效率,如网址查询搜索引擎,DNA序列匹配等。基本定义字符串匹配问题的形式定义:文本(Text)是一个长度为 n 的数组 T[1..n]; 模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m]; T 和 P 中的元素都属于有限的字母表Σ 表; 如果 0≤s≤n-m,并且 T[s+1..s+m] = P...原创 2019-08-24 23:01:42 · 883 阅读 · 0 评论 -
算法导论(二)排序和排序统计量
在数组中,待排序的项称为记录(record),每个记录包含一个关键字(key),即排序问题中要重排的值,记录的剩余部分由卫星数据(statellite data)组成。 如果输入数组中仅有常数个元素需要在排序过程中存储在数组之外,则称排序算法是原址的(in place)。插入排序可以在O(n^2)时间内将n个数排好序,是一种非常快的原址排序算法;归并排...原创 2019-08-20 23:09:49 · 382 阅读 · 0 评论 -
算法学习(三)动态规划
动态规划 概述上回在贪心算法的学习中已经提到,动态规划(Dynamic Programming)的核心思想就是:忘记过去的人必将重蹈覆辙。在动态规划中这句话的意思是将计算过的子问题结果保存下来,下次再遇到就不用重新计算,是一种空间换时间的做法。动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题的解推出。使用动态...原创 2019-08-13 10:05:30 · 554 阅读 · 0 评论 -
背包问题详解
背包问题描述背包问题其实就是将最合适物品放入背包中的问题,最值问题的一般解法都是利用动态规划,背包问题主要有以下3种:1. 01背包有n种物品与承重为m的背包。每种物品只有一件,每个物品都有对应的重量weight[i]与价值value[i],求解如何装包使得价值最大。2. 完全背包有n种物品与承重为m的背包。每种物品有无限多件,每个物品都有对应的重量weight[i]与价值v...原创 2019-09-07 17:41:04 · 1739 阅读 · 3 评论