一、 你对动态规划算法的理解
本章动态规划,可以说是这个学期以来最难的一章了。但是世上无难事,只怕有心人。经过一段时间的学习之后,我觉得动态规划的内容是这样的:
- 找出题目中的变量之间的关系,列出递归方程
- 怎么样用代码来表示出递归方程(一般用到循环)
- 一些辅助方法:备忘录法(将已经计算好的子问题的结果存储下来,避免重复计算浪费资源),添表法(注意i和j的相互关系)
- 单调递增最长子序列:
二、 分别列出编程题1、2的递归方程
m [i] = max { m [k] + 1 | a [k] < a [i] }
- 租用游艇问题
a [1] [j] = min ( a [1] [i] + a [i] [j] , a [1] [j] )
1表示起点站,i表示中转站,j表示终点站
三、 说明结对编程情况
我和小伙伴韦明杰的结对编程合作顺利,其实大多数情况下都是他在带我,我有很多不懂的问题去问他的时候他也会细心的为我解答,我从他身上真的获得了很多编程相关的经验和对于难题的坚持的毅力。
学期也快过半了,我们信息学院大二级在第十周进行了一次算法期中考试。
讲真的,我这次考试考得并不好,主要问题有几个:
- 对于排序算法掌握的不够好,比如第二题,要求写一个时间复杂度为O(logn)的排序算法找中间值,我就没有很好地把题目给敲出来;
- 对于递归法的掌握不够好,第三第四题都是递归算法的变通,老师只是把题目改变了其中的一些条件,就把我给困住了。
- 以上的这些问题归因的话,应该是自己投入算法的时间还不够,还需要加强,我也会意识并注意到这个问题,在接下来的半个学期里,作出改变,争取在期末考试中做出更多的题目。