算法导论
gdliweibing
这个作者很懒,什么都没留下…
展开
-
活动选择(贪心算法) p226
#include#includetypedef struct { int num; int s; int f; int flag;}active;active act[101];int cmp(const void *a,const void *b){ if( ((active*)a)->f==((active*)b)->f )//b后一翻译 2011-11-20 16:45:11 · 503 阅读 · 1 评论 -
图--求强连通分支 算法导论p338
求强连通分支的基本步骤有:1、建立原图连接表G和其转置图连接表T2、对原图G进行深度搜索3、对原图进行拓扑排序4、对图再按原图G拓扑排序后的顺序对转置图T进行深搜5、输出强连通分支#include#includetypedef struct node{ int adjvex; struct node *next;}EdgeNode;typ原创 2011-11-24 17:34:25 · 1829 阅读 · 1 评论 -
算法导论 p193 装配线调度 (动态规划算法方式实现)
#includeint main(){ freopen("1.txt","r",stdin); int n,i; int s1[100],s2[100]; int l1[100],l2[100]; int in1,in2,out1,out2; scanf("%d",&n); for(i=1;i scanf("%d",&s1[i]); scanf("%d原创 2011-11-15 11:11:17 · 543 阅读 · 1 评论 -
图--单源最短路径 -Bellman Ford 算法(可以存在负权边的情况和负权回路)算法导论p362
Bellman Ford 算法 可以存在负权边的情况下解决单源最短路问题和,当出现负权回路时返回布尔值0,不然,则返回1,并可以源点到各点输出最短路径主要步骤:1、建立图(连接矩阵);2、运行Bellman Ford 算法: 对各点初始化; 对图中的每一条边进行先后松弛n-1次 检测是否有回路:当出现d[v]>原创 2011-11-25 13:58:04 · 3352 阅读 · 0 评论 -
求关键路径(包含邻接表的建立、拓扑排序)
#include#includetypedef struct node{ int adjvex; //邻接点域 int info; //边上的信息 struct node *next;//指向下一个邻接点(或边)的指针域}edgenode;原创 2011-09-12 12:41:08 · 1225 阅读 · 2 评论 -
一般树的建立(孩子兄弟链表) 、遍历、深度
#include #include typedef struct csnode { int data; int in; struct csnode *lchild; struct csnode *nextsibl原创 2011-09-28 23:14:53 · 7420 阅读 · 3 评论 -
叉乘求任意多边形(凹凸皆可)面积 (属于计算几何类型)
//叉乘求任意多边形(凹凸皆可)面积 多边形顶点输入时得按顺(逆)时针排列 ZQU 1303#includetypedef struct { int x; int y;}point;point p[1000];int main(){ //原创 2011-10-08 22:57:48 · 3072 阅读 · 0 评论 -
线性筛选——求质数(参考)
#include//线性筛选质数int next[10001],previous[10001];#define NEXT(x) x=next[x];//取x的前驱#define PREVIOUS(x) x=previous[x];//取x的后继#define REMOVE(x) { next[previous[x]]=next[x];\ pr原创 2011-09-04 21:47:01 · 567 阅读 · 0 评论 -
图--深度优先搜索 算法导论p331
#include#includetypedef struct node{ int adjvex; struct node *next;}EdgeNode;typedef struct vnode{ char c; EdgeNode *firstedge;}VertexNode;VertexNode AdjList[10001];int pre[1原创 2011-11-23 11:16:07 · 564 阅读 · 1 评论 -
图--广度搜索 算法导论p326
#include#includetypedef struct node{ int adjvex; struct node *next;}EdgeNode;typedef struct vnode{ char c; EdgeNode *firstedge;}VertexNode;VertexNode AdjList[10001];int pre[1原创 2011-11-22 11:17:37 · 632 阅读 · 2 评论 -
图--有向无负权回路的单源最短路径 DAG 算法导论p365
DAG_SHORTEST_PATHS该算法是对某加权的有向无回路图(即DAG图),特指的是无负权回路图,即可是带负权边的图或是带正值的回路图。时间是(V+E)实现步骤是:1、建立有向邻接表2、然后DAG_SHORTEST_PATHS函数:该函数主要是对图dag 1、进行拓扑排序(即是1、对图进行深搜 2、按深搜完成时间有大到小排列 (这是利用point向量对原创 2011-11-27 17:24:08 · 1862 阅读 · 1 评论 -
稀疏矩阵乘法(三元数组存储)
//稀疏矩阵乘法(三元数组存储) 1240#include #include typedef struct { int r; int c; int v; }SPNode; typedef struct {原创 2011-10-13 19:48:32 · 2837 阅读 · 0 评论 -
快排函数qsort调用的使用细则
快速排序库函数qsort调用细则2010/06/16 09:20 P.M. 来源于:http://wenku.baidu.com/view/3567c018964bcf84b9d57b2f.html转载 2011-09-17 18:02:58 · 7628 阅读 · 0 评论 -
矩阵链乘法(最小乘法数) (动态规划算法实现)算法导论p201
#include#define MAX 99999999int sign[10][10];int min[10][10];void print_optimal_parens(int i,int j){ if(i==j) { printf("A%d",i); return ; } else { printf("("); print_o原创 2011-11-16 10:29:46 · 994 阅读 · 1 评论 -
最长公共子序列(LCS) (动态规划算法实现)算法导论p211
#include#includeint max[101][101];int flag1[101],flag2[101];typedef struct { int i; int j;}point;point sign[101][101];char ch1[101],ch2[101];void LCS_LENGH(int len1,int len2){翻译 2011-11-16 15:31:38 · 557 阅读 · 1 评论 -
最优二叉查找树(动态规划算法实现) 算法导论216
#include#include#include#define MAX 10000double e[102][101];double w[102][101];int root[101][101];double p[101],q[101];typedef struct{ char word[20]; char key[20];}datatype;t翻译 2011-11-19 16:48:09 · 605 阅读 · 1 评论 -
构造哈夫曼树 求哈弗曼编码 (贪心算法实现)算法导论p232
#include#include#includetypedef struct bitnode{ char c; int weigh; struct bitnode *parent; struct bitnode *lchild; struct bitnode *rchild;}BiTNode;BiTNode *queue[101];BiTNode原创 2011-11-21 19:18:23 · 2086 阅读 · 1 评论 -
图--拓扑排序 算法导论p336
#include#include#includetypedef struct node{ int adjvex; struct node *next;}EdgeNode;typedef struct vnode{ char str[20]; int fish; //记录该顶点完成时间即该点标为黑色的时间 EdgeNode *firstedge;原创 2011-11-23 20:54:40 · 680 阅读 · 2 评论