标签:第三章 1.3 复杂度 实践 问题 算法 动态 sum
1.1 问题的描述
最大子段和问题的求解:
1.2 算法的描述
定义一个MaxSum函数,定义并初始化一个sum变量和一个b变量,用一个for循环来寻找a[n]中的最大字段和,判断条件如果b+a[i]大于a[i]本身,那么b就等于b+a[i]之后的值,如果不大于那么就将a[i]直接赋值于b。最后对所得sum跟所得b值作比较选出一个最大值,return sum;在main函数中定义并输入一个n值,再定义一个一维数组a[n];用for循环属于数组,最后输出sum值得到最大字段和的结果。
1.3 问题求解
1.3.1 递归方程式
1.3.2 填表
1.3.3 算法的时间复杂度和空间复杂度
从a[1]到a[j]进行的比较很显然算法的时间复杂度为O(n),而空间也是填表的一维表所占用,所以空间复杂度应为O(n);
1.4 心得体会
这次在实验室跟同伴结对这道题的编码的时候,在最大字段和的理解上和对b[j]含义的理解上出了问题,导致递归方程式列不出来也不理解,看同学代码的时候也有点云里雾里,但是后来想明白之后,才发现原来是挺简单的一道题,所以之后做题还是要从最基本的入手,尤其是动态规划最基本的递归方式真的特别重要。
1.5 动态规划算法的心得和体会
其实动态规划和分治法非常的类似,基本思想都是把大问题划分成一个个的小问题,找出这些小问题的解,最终合成大问题的解决方案,但不同于分治法的就是动态规划会在这过程中记录一些小问题的解,这样以后遇到这些小问题就不用在重新进行计算而是找到解直接使用,降低了时间的复杂度;在系统分析问题时,动态规划常常被使用,这种动态规划的算法感觉能较好解决一些复杂的大问题
标签:第三章,1.3,复杂度,实践,问题,算法,动态,sum 来源: https://www.cnblogs.com/yanwenwen/p/15450760.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。