该文被密码保护。 阅读全文
posted @ 2020-08-13 09:21 周伯通789 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 问题: 对杨辉三角进行一些改造,每个位置的数字可以随意填写,经过某个数字只能到达下面一层相邻的两个数字。现在站在第一层往下移动,我们把移动到最底层所经过的所有数字之和 定义为路径的长度,请求出从最高层到最底层的最短路径。 三角如下: 每一层对应一个阶段,每个阶段对应一个状态集合,问题的最优解包含子问 阅读全文
posted @ 2020-08-13 09:19 周伯通789 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 问题: 我们有一个背包,背包总的承载重量是Wkg。现在我们有n个物品,每个物品的重量不等,并且不可分割,我们现在期望选择几件物品,装载到背包中。在不超过背包所能装载重量的前提下,如何让背包中的物品的总重量最大? 如果用回溯算法从头到尾搜索的话,复杂度为2^n,这里面有很多的重复子问题,所以考虑合并子 阅读全文
posted @ 2020-08-13 09:18 周伯通789 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 问题: 购物车中有n件商品,现有满减条件为满200减50,从购车中选出一些商品,让选出来的商品最大程度的接近满减条件。 分析: 选一些商品,让商品的价格大于200,并且尽量的接近200。 这是一个多阶段决策问题,每个阶段会对应一个状态集合,阶段n的状态可以由阶段 n-1、n-2、...、1 转移而来 阅读全文
posted @ 2020-08-13 09:17 周伯通789 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 问题: 假设我们有几种不同币值的硬币,v1、v2、......、vn,如果我们要支付w元,求最少需要多少个硬币? 假设有三种不同的硬币,1元、3元、5元。 代码: 1 #include <iostream> 2 #include <string.h> 3 4 int main() 5 { 6 int 阅读全文
posted @ 2020-08-13 09:15 周伯通789 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 问题: 假设我们有一个n*n的矩阵,w[n][n],矩阵存储的都是正整数,棋子的起始位置在左上角,终止位置在右下角,我们将棋子从左上角移动到右下角,每次只能向右或者向下移动一位。从左上角到右下角,会有很多不同的路径可以走,我们把每条路径经过的数字加起来看做路径的长度。那从左上角移动到右下角的最短路径 阅读全文
posted @ 2020-08-13 09:14 周伯通789 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 问题: 在一个数组中寻找最长递增子序列。 动态规划方法: 当一个数要加入进来的时候有两种方法: 1、前面的数都比当前的数大(或者相等),因此,以这个数为止的最长递增子序列长度就是1。数组中的第一个数一般预先填好,或者设置哨兵。 2、前面的数有比当前的数小的,那么以这个数为止的最长递增子序列长度就是s 阅读全文
posted @ 2020-08-13 09:13 周伯通789 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 问题: 最长公共子串是编辑距离的一种,只允许增加、删除字符两种编辑操作,它表征的也是两个字符串之间的相似程度。 代码: 1 #include <iostream> 2 #include <string.h> 3 4 int max3(int a, int b, int c) 5 { 6 int tm 阅读全文
posted @ 2020-08-13 09:12 周伯通789 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 问题: 编辑距离指的是将一个字符串转化成另一个字符串,需要的最少编辑操作次数(比如增加一个字符、删除一个字符、替换一个字符)。编辑距离越大说明两个字符串的相似程度越小,相反,编辑距离越小,说明两个字符串的相似程度越大。编辑距离有多种不同的计算方式,本节使用莱文斯坦距离,莱文斯坦距离允许增加、删除、替 阅读全文
posted @ 2020-08-13 09:08 周伯通789 阅读(208) 评论(0) 推荐(0) 编辑