dp
动态规划
笨媛
主人太懒
展开
-
KMP算法
KMP算法常用于字符串匹配问题,即从一个串中找另一个串是否为这个串的子串。(此图为转载https://blog.csdn.net/x__1998/article/details/79951598)KMP算法与传统算法不同的是当发现主串与目标串匹配不同的时候,不是像传统算法那样每次只把目标串往后移一位,KMP通常会根据next数组移动,移动位数 = 已匹配的字符数 - 不匹配前一位的n...原创 2020-03-18 20:55:34 · 186 阅读 · 0 评论 -
需要用getchar()吃掉回车的几种情况
1.前面有scanf(这里scanf可以是任意类型,包括一个字符的情况),后面有 scanf("%c",ch);2.前面有scanf,后面有gets(s);3.两个接收字符的ch=getchar();暂时写这几种情况,后面遇到了再补充。...原创 2020-01-14 17:17:23 · 1256 阅读 · 0 评论 -
栈的基本题目 出错了
1.栈的基本操作题目链接错误代码:(我输入的是字符)#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int n,m,T,i,x; char s; int a[1001]; scanf("%d",&T); while(T--)...原创 2022-07-05 14:27:22 · 195 阅读 · 0 评论 -
01背包问题和完全背包问题
01背包01背包字面意思来看0就是不拿,1就是拿,且每次只能拿一个物品放入背包。开二维数组的状态方程:此情景为往固定容量的背包里装物品,使包内物品为最大价值实际上就是在每个物品的基础上,遍历所有可能的背包空间,如果放得下去就比较放与不放对价值的影响一维数组的状态方程:...原创 2020-01-12 11:20:22 · 9470 阅读 · 0 评论 -
递归调用——汉诺塔问题
递归问题一直是我没弄懂的问题,就是不明白递归在调用函数的时候实现过程是怎么一回事,递归函数在调用的过程中代码的执行顺序是怎样的,看到有博主做了一个很形象的解释:说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事,故事是说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事,故事是说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事。。。。。。对,就是这种反复循环我不懂;现就汉诺塔问题...原创 2020-01-11 10:45:52 · 950 阅读 · 1 评论 -
dp实现关于子序列问题
1.最长上升子序列的长度代码实现:状态转移方程:len(1)=1;len(k)=max{len(i):1<i<k且ak>ai且k!=1}+1;2.上升序列的最大和注意:最长的上升子序列的和不一定是最大代码实现:状态方程:s(1)=a[1];s(k)=max{s(i):1<i<k且ak>ai且k!=1}+a[k];3.最长公共子序列的...原创 2020-01-10 16:36:41 · 183 阅读 · 0 评论 -
关于冒泡排序的两种书写
冒泡排序假设共有n个数据需要按从小到大的顺序排序法一:常用方法,数组下标从0-n;(注意图中灰色部分为区分重点)法二:数组下标从1-n的情况;...原创 2020-01-09 21:31:12 · 202 阅读 · 0 评论 -
单链表的拆分
数据结构实验之链表九:双向链表学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时,B又有一个指...原创 2019-12-25 19:45:02 · 501 阅读 · 0 评论