摘要:
问题: 假设我们有几种不同币值的硬币,v1、v2、......、vn,如果我们要支付w元,求最少需要多少个硬币? 假设有三种不同的硬币,1元、3元、5元。 代码: 1 #include <iostream> 2 #include <string.h> 3 4 int main() 5 { 6 int 阅读全文
摘要:
问题: 假设我们有一个n*n的矩阵,w[n][n],矩阵存储的都是正整数,棋子的起始位置在左上角,终止位置在右下角,我们将棋子从左上角移动到右下角,每次只能向右或者向下移动一位。从左上角到右下角,会有很多不同的路径可以走,我们把每条路径经过的数字加起来看做路径的长度。那从左上角移动到右下角的最短路径 阅读全文
摘要:
问题: 在一个数组中寻找最长递增子序列。 动态规划方法: 当一个数要加入进来的时候有两种方法: 1、前面的数都比当前的数大(或者相等),因此,以这个数为止的最长递增子序列长度就是1。数组中的第一个数一般预先填好,或者设置哨兵。 2、前面的数有比当前的数小的,那么以这个数为止的最长递增子序列长度就是s 阅读全文
摘要:
问题: 最长公共子串是编辑距离的一种,只允许增加、删除字符两种编辑操作,它表征的也是两个字符串之间的相似程度。 代码: 1 #include <iostream> 2 #include <string.h> 3 4 int max3(int a, int b, int c) 5 { 6 int tm 阅读全文
摘要:
问题: 编辑距离指的是将一个字符串转化成另一个字符串,需要的最少编辑操作次数(比如增加一个字符、删除一个字符、替换一个字符)。编辑距离越大说明两个字符串的相似程度越小,相反,编辑距离越小,说明两个字符串的相似程度越大。编辑距离有多种不同的计算方式,本节使用莱文斯坦距离,莱文斯坦距离允许增加、删除、替 阅读全文