算法之16动态规划解决0-1背包问题

3.8 0-1背包问题(Knapsack problem)3.8.1 问题描述其中每种物品只有1件,存放哪些物品,才能使背包存放物品价值最高? 3.8.2 算法思路假设背包空间只有1kg、2kg...

算法之15动态规划解决矩阵连乘问题

3.7 矩阵连乘(Matrix chain multiplication)3.7.1 问题描述求多个矩阵连乘的最优次序,使得所需的乘法次数最少,并求出所需的乘法次数。 3.7.2 算法思路跟以往...

算法之14动态规划解决最短路径问题

3.6 最短路径3.6.1 问题描述最短路径问题(Shortest path problem):再不回退的前提下,找到A到F的最短路径 3.6.2 算法思路A到B1的最短路径为4,前序节点为A;...

算法之13动态规划解决最长公共子序列问题(LCS)

3.5 最长公共子序列(LCS)3.5.1 问题描述最长公共子序列(Longest Common Subseuence,LCS)问题:给定两个字符串,求解它们的最长公共子序列的长度,其中子序列是...

算法之12动态规划解决切木材问题

3.4 切木材问题(Rod-cutting problem)3.4.1 问题描述给一个长度为17的木材,可以切成小段卖出,价格根据小段的长度不同而不同。如何通过切成小段卖出尽可能高的总价钱? 3...

算法之11动态规划解决跳跃问题

3.3 跳跃问题(Jump Game)3.3.1 问题描述给定一个非负整数数组,初始状态你在数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。请判断,你最后是否能够抵达最后一个...

算法之10动态规划解决最大子串和问题

3 动态规划(Dynamic Programming)3.1 算法介绍3.1.1 动态规划特性 问题分阶段:一个问题的求解可以拆分成若干个阶段的子问题 阶段有依赖:问题的最优解依赖于子阶段问题...

算法之9分治法详解二维最近点对问题

2.9 二维最近点对问题2.9.1 问题描述问题描述:二维平面上有n个点,如何找到距离最近的点? 2.9.2 暴力求解1 算法思路二维平面上有n个点,则有(n-1)+(n-1)+...+1=n(...

算法之8分治法解决赛程安排问题

2.8 赛程安排2.8.1 问题描述n(n=2k)个选手参赛,设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各比赛一次; 每个选手一天只能比赛一次; 循环赛一共进行n-1天...

算法之7分治法利用快速排序实现寻找第K最小数

2.7 寻找第K最小数2.7.1 算法思路整体思路:结合2.6节的快速排序 如果基准位就是第k位,就直接返回 如果基准位在k的左端,就从基准位到尾部找 如果基准位在k的右端,就从首部到基准位找...