基础:c语言学习到结构体,然后将wustoj上面的零起点学算法写完就可以开始学习基本算法了。
学习基础算法的顺序(个人观点):
-
二分三分:二分查找,三分查找,归并排序,快速幂。
-
贪心:贪心是一种算法策略,讲究由单步最优到全局最优。
-
动态规划:这里对于新生就先掌握简单的背包问题就ok了。比如01背包,完全背包。先将简单的数塔之类的规划搞清楚就ok了。
-
基本的数据结构:链表,栈,队列,二叉树(同时了解stl里面的stack(栈),queue(队列),list(双向链表))
-
开始学习搜索:bfs(广度优先搜索),dfs(深度优先搜索)
-
开始了解stl模板,开始了解stl里面的函数,比如sort(快速排序)等等,还有一些容器比如set(集合),vector(向量),map(映射),还有pair等等。
-
开始学习基本数论:比如快速筛选素数,欧几里得,唯一分解定理,欧拉函数等等。
-
开始学习更深一点的数学:取模,扩展欧几里得,逆元。
-
进阶搜索:dfs的剪枝等等