(1)使用任意算法解决如下问题
问题:有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 w[i],价值是 p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
举例:假设v=20,w={5,6,3,7,8},p={6,7,4,8,9},则最大价值为23
(2)使用分治法解决排序问题
问题:有一组无序的整数,现设计一种算法使该组数有序。
举例:原数据为1 6 5 2 3 8 7 9,排序后的数据为1 2 3 5 6 7 8 9
(3)单源最短路径
问题:给定一个带权有向图G=(V,E)。其中每条边的权是非负实数。另外还给定v中的一个顶点,称为源。现在要计算从源到所有其他各顶点的最短路长度。这里路的长度是指路上各边权之和。
举例:假设输入一个带权有向图的二维数组,输出单源最短路径的长度。
(4)使用动态规划算法解决如下问题
问题:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。当z既是x的子序列又是y的子序列是,称z为x和y的公共子序列。现给定两个序列x和y,求x和y的最长公共子序列的长度。
举例:x={A,B,C,B,D,A,B},y={B,D,C,A,B,A},则输出4
(5)使用动态规划算法解决如下问题
问题:给定n个矩阵{A1,A2,...,An},其中Ai与Ai+1是可乘的,i=1,2,...,n-1,求矩阵相乘至少需要多少次数乘?
举例:A1 10*100,A2 100*5,A3 5*50,则A1*A2*A3至少需要7500次数乘。
(6)使用分治法解决如下问题
问题:将正整数n表示成一系列正整数之和n=n1+n2+...+nk(其中,n1>=n2>=...>=nk>=1,k>=1),求任意正整数n的划分数(n<10)。
举例:整数5有如下5种划分:
5=4+1,5=3+2,5=3+1+1,5=2+1+1+1,5=1+1+1+1+1
(7)使用二分搜索算法解决如下问题
问题:给定一个已排好序的n个元素,现要在这n个元素种找出一个指定的元素x。
举例:1 2 3 5 6 7 8 9 ,如输入5则输出4,如输入10,则输出false。
(8)使用贪心算法解决如下问题
问题:有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为wi。最优装载问题要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
举例:假设c=20,w={5,6,7,8,9},则输出 5 6 7
(9)使用回溯法解决如下问题
问题:某售货员要到若干城市去推销商品,已知各城市之间的路程。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。城市数量小于5个