动态规划
虚心学习进步
主学C++、linux、网络编程
展开
-
动态规划_最优二分查找树
一、什么是最优二叉查找树最优二叉查找树:给定n个互异的关键字组成的序列K=<k1,k2,...,kn>,且关键字有序(k1<k2<...<kn),我们想从这些关键字中构造一棵二叉查找树。对每个关键字ki,一次搜索搜索到的概率为pi。可能有一些搜索的值不在K内,因此还有n+1个“虚拟键”d0,d1,...,dn,他们代表不在K内的值。具体:d0...原创 2018-08-31 21:08:48 · 1571 阅读 · 0 评论 -
动态规划---剑指offer面试题46--把数字翻译成字符串
题目给定一个数字,按照如下规则翻译成字符串:0->a1->b...25->z因此一个数字可能有多种翻译。例如,12258有5种不同的翻译,bccfi,bwfi,bczi,mcfi,mzi。请实现一个函数,计算数字有多少种翻译方法。思路可以用递归解决,会发现子问题258 58都重复了。 自然想到可以用动态规划来解决,用f(i)来表示从...原创 2018-08-28 09:01:11 · 379 阅读 · 0 评论 -
背包问题(二)----------完全背包问题
继0_1背包问题后,本文介绍完全背包问题0_1背包问题见:https://blog.csdn.net/qq_34793133/article/details/80543625完全背包问题与01背包问题的区别在于每一件物品的数量都有无限个,而01背包每件物品数量只有一个。 问题解法其实和01背包问题一样,只是初始化的值和递推公式需要稍微变化一下。初始化时,当只考虑一件物品a时,f[1...原创 2018-09-01 08:06:43 · 1077 阅读 · 0 评论 -
剑指offer面试题14----剪绳子(动态规划,贪心算法)
一、动态规划时间复杂度O(n^2)#include <iostream>using namespace std;int maxProduct(int length){ if (length < 2) return 0; if (length == 2)//当绳子原长是2时候,因为必须要切,所以只能切成1和1 return 1; if (le...原创 2018-08-28 09:01:00 · 714 阅读 · 1 评论 -
背包问题(一)---------0_1背包问题
背包问题有多种,比如:问题1:物品受限背包,第i种物品最多取ni个问题2: 0-1背包,本文即将介绍,xi=0或者1,i=1、2、3........n问题3:多背包问题,m个背包,背包j装入最大重量Bj,j=1、2、3........m,在满足所有背包重量约束 条件下使得装入物品价值最大问题4:二维背包,每件物品有wi和体积ti,i=1,2.........原创 2018-09-01 08:06:56 · 1002 阅读 · 0 评论 -
最大子段和
//本博文仅供博主个人代码笔记之用。至于具体原理,我有空的话会更新,读者可以自行查书。#include <iostream>#include <algorithm>using namespace std;const int N = 50;int main(){int c[N] = { 0 }; //c[]存每个子问题的最大字段和,最后的最大子段必在此中i...原创 2018-08-31 21:22:24 · 193 阅读 · 0 评论 -
动态规划算法---求最长公共子序列
最长公共子序列和最长公共子串区别 最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别: 子串要求在原字符串中是连续的,而子序列则只需保持相对顺序一致,并不要求连续。例如X = {a, Q, 1, 1}; Y = {a, 1, 1, d, f}那么,{a, 1, 1}是X和Y的最长公共子序列,...转载 2018-08-05 22:33:48 · 563 阅读 · 0 评论 -
动态规划算法----最短编辑距离与最长公共子序列
参考:https://blog.csdn.net/u014247371/article/details/26158635(一)先谈最短编辑距离问题描述:编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sit...原创 2018-08-28 09:00:55 · 1398 阅读 · 0 评论 -
剑指offer面试题49---丑数
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数分析:容易想到使用穷举法对N个数判断是否仅被2、3、5整除,低效bool IsUgly(int number){ while(number%2==0) number/=2; ...原创 2018-08-27 21:01:07 · 165 阅读 · 0 评论