上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 56 下一页
摘要: 问题: 假设我们有几种不同币值的硬币,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) 编辑
摘要: 问题: 两个大数相乘,无法用计算机中现有的类型直接进行操作,因为表示范围有限。两个大数是通过字符串表示的。 解决思路: 将输入的字符串转换成char数组,在转成int数组,采用分治思想,每一位进行相乘。 公式: AB*CD = AC(BC+AD)BD ,然后从后到前满10进位。 摆放成另一种形式就看 阅读全文
posted @ 2020-08-12 20:37 周伯通789 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 参考知乎一位作者的写法,有时间再改成c++. 链接:https://www.zhihu.com/question/330983016/answer/726069573 问题: 马拉车用来搜索最长回文子串。 普通的搜索方法为逐一的向两端扩展,时间复杂度是O(n*n)。 马拉车算法的时间复杂度是线性的为 阅读全文
posted @ 2020-08-12 20:22 周伯通789 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 问题: 给定一个TargetNumber和一个Array,在Array中找出n个数,这n个数之和等于TargetNumber。 分析: 当n==1时,此时变成了典型的一维数组查找问题,可以采用排序和二分查找的方法。 当n==2时,先按升序排序,ptr1指向数组头,ptr2指向数组尾。若指针所指2数之 阅读全文
posted @ 2020-08-12 20:00 周伯通789 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 问题: 求一个数组中的两个数,使这两个数的和等于某个指定的数。 解析: 可以借助于hash表降低时间复杂度。 代码: 1 #include <vector> 2 #include <unordered_map> 3 using namespace std; 4 5 vector<int> twoSu 阅读全文
posted @ 2020-08-12 19:58 周伯通789 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 问题: 求树中两个节点的公共祖先。 可能情况1:树为二叉搜索树。 我们可以从根节点开始搜索,如果当前节点的值比两个节点的值都大,那么下一步遍历左子树。 如果当前节点的值比两个节点的值都小,那么下一步遍历右子树。 如果当前节点的值比一个节点大,比另一个节点小,那么当前节点就是最低公共祖先节点。 代码: 阅读全文
posted @ 2020-08-12 19:31 周伯通789 阅读(757) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 56 下一页