摘要: 1.分治法分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。一般来说,分治算法在每一层递归上都有3个步骤:(1)分解:将问题分解成一系列子问题。(2)求解:递归地求解各子问题。若子问题足够小,则直接求解。(3)合并:将子问题的解合并成原问题的解。2.Hanoi塔分治法的典型应用:当只有一个盘子时,直接从A移到C即可;如果已知n-1个盘子的移动方案,那么n个盘子的移动方案如下:先把前n-1个盘子从A借助C移动到B,再把第n个盘子从A直接移到C,然后再将B处的n-1个盘子从B处借助A移动到C处。至此就完成全部盘子的移动。void Hanoi(int 阅读全文
posted @ 2011-10-26 18:57 残星 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 对有向图进行拓扑排序的方法(可运用的排课等):(1)初始时拓扑序列为空间;(2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧形;(3)重复(2),直到不存在入度为0的顶点为止(若所有顶点都进入拓扑序列返回则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。#define MAXVNUM 50//最在顶点数typedef struct ArcNode{//表节点类型int adjvex;//邻接顶点编号struct ArcNode *nextarc;//指示下一邻接顶点}ArcNode;typedef struct AdjList{//头节点类 阅读全文
posted @ 2011-10-26 18:33 残星 阅读(926) 评论(0) 推荐(0) 编辑