2021-2022-1 学期《算法设计与分析》实验报告
Coin-row problem 研究报告
学号:____________ 姓名:___________
一、目的:
有一排 n 个硬币,其值是一些正整数 c₁,c₂,...,cn,不一定是不同的。目标是根
据初始行中相邻的两个硬币不能被拾取的约束来拾取最大金额的货币。
二、方案:
实验环境:Windows 10,vs2019
解题思路:
问题的意思是,在原始位置互不相邻的条件下,所选硬币的总值最大。 设第 i
个硬币币值为 Ci,可选最大金额为 F(i)。
考虑一般情况,对于每个硬币 i ,有两种选择:要或者不要
要 i :那么可选硬币的金额 F( i ) = F( i - 2 ) + Ci ;
不要 i :那么可选硬币的金额 F( i ) = F( i - 1 ) ;
此时我们就得到了递推方程: F(n)= max{ F(n - 2)+ Ci , F(n - 1)}
特殊情况:
当 n = 0 时,有 F(0)= 0;
当 n = 1 时,有 F(1)= C1;
如此得到了递归函数
数据集:
图 1 数据集
需要耗费 θ(n)时间和 θ(n)空间