对这几天写的做个小总结:
1.写过几个图的算法之后,深感理论和实际的差距,虽然实现的并不复杂,但是还是花了蛮久时间。尤其是到前两天的最短路径,生成树,以及昨天的关键路径,理论很早就学过,但是没有动手写过代码,到了要动手写的时候就吭哧吭哧半天抠出几行,代码和写汉字一样,键盘打多了,就会出现提笔忘字,编译器太智能了,换个记事本去敲两下估计也很抓狂,还是得日常多敲多练。
2. java面向对象不同于面向过程,而以前自己只会写个简单的c代码,写到图的时候就可以用到之前写的矩阵类,明显方便了很多,重写toString方法时候里用的自定义类的对象中的方法也要重写才能完成想要的结果。
3. 调试的重要性,往往第一遍写好之后严重的会出现异常报错,轻一点的就是和预期输出不符,偶有一遍就完全跑通的情况。还要以不同的测试用例测试,有一些边界情况要处理,或者异常数据之类的
4. 抽象思维,其实这一块好像把图画出来之后就会通畅很多,简单画一个草图,能帮助比较直观地理解算法流程。注意把问题转换为数据结构和算法逻辑
5.要注意算法复杂度,可以空间换时间来提高时间效率,比如用一个辅助栈,队列之类的,不过类似于深度优先这些,相较于递归的话,递归更简洁直观点
总的来说难度尚可,每天花点时间练代码保持手感还蛮重要的