![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 93
z1earn
这个作者很懒,什么都没留下…
展开
-
01背包、完全背包、多重背包、分组背包问题,一文读懂
背包问题是一种组合优化的 NP 完全问题:有 N 个物品和容量为 W 的背包,每个物品都有自己的体积 w 和价值 v,求拿哪些物品可以使得背包所装下物品的总价值最大。0-1背包有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。每件物品都有选与不选两种情况,那么这个问题完全可以用回溯法来暴力搜索,时间复杂度为O(n2)O(n^2)O(n2),因为暴力解法时间复杂度太高,所以才要用原创 2022-04-12 15:14:32 · 2935 阅读 · 0 评论 -
如何理解KMP算法
KMP算法是对字符串暴力匹配算法的改进,要理解KMP算法,首先需要了解字符串的暴力匹配算法。暴力匹配算法假设有主串“abcabcabcabf”和模式串"abcabf",我们需要逐个比较主串s和模式串p的字符,如果模式串的每个字符都能和主串的某个子串匹配上,则查找成功从i=0,j=0开始,逐个比较s[i]和p[j],当i=5并且j=5时,出现s[i] != s[j] 的情况这时i应该回退到i=1的位置,j回退到j=0,然后再次开始逐个比较直到最后 i = 11, j = 5时匹配结束.原创 2021-09-13 16:52:49 · 386 阅读 · 0 评论