Coursera 上 Algorithms,Part II, week 2的作业。
代码在这边:https://github.com/OldDream/Algorithms-6th-Sedgewick/tree/working_branch/src/seamCarver
还有两个点待优化:
1.在删除seam之后,更新energyMatrix的算法还有优化空间。只需重新计算seam和seam左侧的pixel对应的energy即可,其余可直接复制。
2.findHorizontalSeam()的时候对energyMatrix做了一次矩阵转置,其实可以写专用的算法,省掉这次转置。颠倒下AcyclicSPForMatrix里面的坐标就行。
手动进行“数据结构可视化”还是很有用的,省脑子。
有些地方,可以先用低效率算法实现,整个程序跑起来之后再换算法。比如AcyclicSPForMatrix.getToplogicalOrder()。