试题为考后回忆。如有侵权联系删除。
(1,2题选其一)
1、生兔子问题 8分
已知兔子从第3个月开始,每个月都能繁殖1对兔子。
(1)现在,第一个月领养了1对兔子。写出这种情况下,1年中(12个月)每个月的兔子个数。
(2)然后写出生兔子问题的一般算法。
2、爬楼梯问题 8分
一次爬1个楼梯或者2个楼梯,
(1)求爬13层楼梯时每一层的可能方式
(2)以及写出求爬楼梯问题的一般算法
3、称重问题 10分
有10箱产品,有1箱产品是次品,已知次品的重量比正常产品少10克。假设箱子编号为x(从1到10),只允许你称重一次,称重结果为w
请设计一个算法查找出哪个箱子中是次品,并表示最后算出的次品的箱子编号。表达式中只允许出现x、w和数字。
4、满足何种性质的问题被称为NP完全问题?请简述研究NP完全问题的意义。
5、试简要阐述“论证某一问题具有最优子结构性质”时的一般方法;并证明0-1背包问题的最优子结构性质
6、广义背包问题 30分
给定载重量为M的背包和n种物品,每种物品有一定的重量和价值,现在需要设计算法,在不超过背包载重量的前提下,巧妙选择物品,使得装入背包的物品的总价值最大化。规则是,每种物品均可装入背包多次或不装入(但不能仅装入物品的一部分)
设计求解广义背包问题的算法,写出递归公式、详细算法思路(可以举例说明),说明时间复杂度
7、查找元素 20分
已知一个递增序列,存放在A[0,n-1]数组下标的数组中。
假设存在一个元素A[i]=i,设计一个最坏时间复杂度为O(logn)的算法,找到这个元素i