Skip to content

PeiYuanHao/Familiar-with-the-design-and-implementation-of-dynamic-programming-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

熟悉动态规划算法的设计与实现

[要求]

按以下上机内容完成各题目,在上机课进行验机检查。同时,归纳总结编译、运行过程中出现的问题以及解决方法。

[内容]

采用动态规划来设计并实现0-1背包问题、矩阵连乘、最长增序子数组。
(1)0-1背包问题:给定n个物品和一个背包。第i个物品的重量是Wi,其价值为Vi,背包的容量为C,Wi、Vi和C均为整数。应如何选择装入背包的物品,使得装入的物品重量在不超过C的前提,总价值最大?物品只能全部装入或不装。
要求:输入任意n个物品的价值和重量,输出物品的装包方案(可输出装入背包的物品号)。
(2)矩阵连乘:给定n个矩阵{A1,A2,…,An},其中Ai与Ai-1是可相乘的。确定一个计算次序,使计算矩阵连乘积A1A2…An所需计算量最少。
要求:输入为一个记录n个矩阵的行数和列数的数组,如{x1,x2,x3,…,xn,xn+1},其中x1和x2为A1矩阵的行数和列数,x2和x3为A2矩阵的行数和列数,xn和xn+1为An矩阵的行数和列数。输出为计算量最小的矩阵连乘加括号方式,如(A1A2)(A3*(A4*A5))。
(3)最大增序子数组:找出长度为n的数组中最大的增序子数组(子数组中数值为非递减序列)。子数组中的数要求与原数组中的数的前后位置关系不变,且子数组中数的个数最多。
提示:可以在已有数组基础上通过从小到大排序构造一个新数组,对两个数组运用类似最长公共子序列的方法求解。
要求:输入为一个包含任意个数数字的数组,输出最长增序子数据组中包含的数字。

[标准]

(1)算法实现可正确在机器上执行并输出正确结果; (2)能够正确指出并讲解核心部分代码。

About

熟悉动态规划算法的设计与实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages