本质上算法都是对数据的操作,没有数据,没有存储数据的容器和组织方式,算法就是无源之水无本之木,就是巧妇也难为无米之炊。算法是演员,变量、数组、容器等就是舞台,
- 然后整个算法的处理流程,都是针对这些数据(存储在变量或者 STL 中的容器中)进行初始化,修改,更新的,算法的结束也是对这些数据进行判断;(算法实现过程中的数据,相当于面向对象编程中的成员变量),数据居于中心位置;
1. 旅行商问题
- 结点(城市)间的邻接关系与权重 ⇒ 邻接矩阵
int dst[100][100];
(二维数组,如果没有更复杂的操作,仅仅是存储和访问,使用二维数组即可,无需更为复杂的vector<vector<int>>
) - 城市是否已被访问:
bool visited[n];
/vector<int>&
- 访问过的结点:
vector<int> path;
- 可以很方便地获取尾部结点(最新添加的),多少有点像栈(stack),path.back()
- 一些变量:
int best;
维护全局的唯一标识最终路径的距离,int curLen;
访问到目前的所走过的路程;