不忘初心的专栏

分享学习的点点滴滴,欢迎交流。

排序:
默认
按更新时间
按访问量

最小编辑代价(动态规划)

代码实现:对于不同的要求,主要是找到求dp[i][j]的规律。 #include #include #include #include #include #include #include using namespace std; #define MAX_LENGTH 50 /...

2015-12-05 20:58:07

阅读数:879

评论数:0

最长公共字串(动态规划)

【题目】 给定两个字符串 str1 和 str2,返回两个字符串的最长公共子串。 【举例】 str1 =“1AD12345CD ”, str2 =“12345EF”。返回“12345”。 【要求】 如果str1 长度为M, str2长度为N,实现时间复杂度为O(M*N),额外...

2015-12-05 20:02:22

阅读数:348

评论数:0

最长公共子序列(动态规划)

【题⺫】 给定两个字符串 str1 和 str2,返回两个字符串的最长公共子序列。 【举例】 str1 =“1 A2 C 3 D 4 B5 6 ”, str2 =“B1 D 2 3 C A4 5 B6 A”。 “123456”或者“12C4B6”都是最长公共子序列,返回哪一个都⾏...

2015-12-05 19:31:00

阅读数:311

评论数:0

矩阵的最小路径和(空间压缩)

题目:已知矩阵 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 ‰以1 ,3 ,1, 0 , 6,1 ,0路径和最小,所以返回12  下面代码示例给出通常动态规划解决方法空间复杂度为O(M*N),同时给出空间压缩之后的方法,空间复杂度为O(mi...

2015-12-05 15:49:01

阅读数:670

评论数:0

动态规划--最长递增子序列

对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2...,其中Ui 给定一个数字序列A及序列的长度n,请返回最长上升子序列的长度。 测试样例: [2,1,4,3,1,5,6],7 返回:4 代码...

2015-12-05 14:44:12

阅读数:399

评论数:0

子数组最大乘积

给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。 class Solution { public: double maxPr...

2015-12-04 23:44:15

阅读数:421

评论数:0

换零钱--动态规划

题目示例: 【题目】 给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法。 【举例】 arr=[5,10,25,1],aim=0。 组成0元的方法有1种,...

2015-12-03 21:27:18

阅读数:1246

评论数:0

斐波那契数列求解的优化

题目:给定整数 N,返回斐波那契数列的第 N项。 解法一:暴力递归,时间复杂度为O(2^N) int fun(int n) { if(n < 1) { return 0; } else if(n ==1 || n ==2) { ...

2015-12-03 15:56:51

阅读数:416

评论数:0

求两个数的最大公约数算法

转载地址:http://blog.163.com/xiaoting_hu/blog/static/5046477220136491243567/ 1.辗转相除法 辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 例如,求gcd(319,377): ∵ 377÷319=1(...

2015-12-03 14:57:51

阅读数:2707

评论数:0

[牛客网--左老师]局部最小值位置

定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<...

2015-11-15 21:42:08

阅读数:548

评论数:0

[牛客网-左老师]左右最值最大差

给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少? 给定整数数组A和数组的大小n,请返回题目所求的答案。 测试...

2015-11-13 23:08:21

阅读数:1206

评论数:0

[牛客网-左老师]最短排序

对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回:4 #include #include using namespace std; /* 时间复杂度为...

2015-11-13 21:31:43

阅读数:586

评论数:0

图的深度优先遍历和广度优先遍历代码实现

#include #include #include #include #include using namespace std; typedef char TypeData; /* 数据类型 */ #define MAXVEX 100 /* 最大顶点数 */ #define I...

2015-11-04 17:07:32

阅读数:5603

评论数:0

归并排序代码实现

一、递归代码 #include #include #include #include using namespace std; #define MAXSIZE 10 /* 将有序的SR[i..m]和SR[m+1...n],归并为有序的TR[i..n] */ void Merg...

2015-11-03 21:21:40

阅读数:293

评论数:0

二叉排序树代码实现

参照《大话数据结构》 313 ~328页 #include #include #include #include using namespace std; /* 二叉树存储结构定义*/ typedef int TypeData; typedef struct BiTreeNo...

2015-11-03 20:08:25

阅读数:681

评论数:0

求二叉树叶子节点的最浅深度

下面给出一个例子: 对于该二叉树而言,叶子节点有C、D两个,C节点的深度为3,D节点的深度为2,那么最浅叶子节点的深度为2。 实现代码如下: /* 二叉树存储结构定义*/ typedef char TypeData; typedef struct BiTreeNode { ...

2015-10-31 14:08:11

阅读数:1132

评论数:0

求二叉树的深度代码实现

用递归的方案实现: /* 求二叉树的深度 */ int getDepthBiTree(BITREENODE* T) { int lDepth = 0, rDepth = 0; if(T == NULL) { return 0; } els...

2015-10-30 23:40:07

阅读数:3367

评论数:0

线索二叉树详解以及代码实现

参照《大话数据结构》188到194页。 一、二叉树的线索存储结构定义 /* 二叉树线索存储结构定义 Link = 0,代表指向左右孩子的指针 Thread= 1 代表指向前驱或后继的线索*/ typedef enum{ Link, Thread} PointerTag; ...

2015-10-30 14:28:22

阅读数:1565

评论数:2

逆波兰表达式C++代码实现

当我们输入一个数学表达式,是中缀表达式,我们首先转换为后缀表达式(逆波兰表达式),然后再进行求值。 在《大话数据结构》的104-100页有详细的介绍,下面是我理解之后的代码实现。 代码思路: (1)首先对输入的中缀表达式合法性进行判断,bool isStringLegal(const...

2015-10-26 18:34:09

阅读数:4049

评论数:1

KMP算法代码实现

有关KMP算法,这里有篇博客讲解的特别好,博客链接为: http://blog.csdn.net/tukangzheng/article/details/38438481 下面是我实现的代码: #include #include #include #include us...

2015-09-15 14:18:45

阅读数:438

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭