算法第三章上机实践报告
1.算法第3章实验 7-1 最大字段和 分析
1.1问题描述:
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。
输入格式:
输入有两行:
第一行是n值(1<=n<=10000);
第二行是n个整数。
输出格式:
输出最大子段和。
1.2算法描述
1.3问题求解
1.1.1递归式方程:b[j]=max{b[j-1]+a[j],a[j]} 1<=j<=n
1.1.2表的维度:一维 填表范围:0~n-1 填表顺序:从b[1]填到b[n]
1.1.3时间复杂度:O(n); 空间复杂度:O(n)
1.4心得体会:动态规划的关键就是找出递归式方程,然后确定好表的维度,填表范围和填表顺序。还要注意边界条件。
2.你对动态规划算法的理解和体会。
动态规划的难点就在于找出递归方程式,需要弄清楚题目所反映的问题的本质,才能理解其中的递归规律。除此之外,还要特别注意题目中的边界条件。动态规划在一定程度上也降低了解决问题的时间复杂度和空间复杂度,有助于提高效率。