摘要: 一、Bellman-Ford算法最优性原理 它是最优性原理的直接应用,算法基于以下事实:l 如果最短路存在,则每个顶点最多经过一次,因此不超过n-1条边;l 长度为k的路由长度为k-1的路加一条边得到;l 由最优性原理,只需依次考虑长度为1,2,…,k-1的最短路。适用条件&范围l 单源最短路径(从源点s到其它所有顶点v); l 有向图&无向图(无向图可以看作... 阅读全文
posted @ 2008-10-31 23:28 SЁv⑦ēЙ 阅读(876) 评论(3) 推荐(0)
摘要: 算法用了层次图的概念,每个顶点u都有一个层次值 level(u),这个值就是剩余图(residual graph)中从源到该点最少要经过的边数,而层次图就是包含所有满足 level(v) = level(u) + 1 的边以及这些边两端的顶点组成的。整个算法就是不停地重建这个图,然后沿着这个图(也就是朝着 level 值为当前顶点的 level 值加1的那些顶点)走,如果走到汇点,那么就相当于找到... 阅读全文
posted @ 2008-10-31 23:20 SЁv⑦ēЙ 阅读(678) 评论(0) 推荐(0)
摘要: 顺治喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你。顺治想知道载一个区域中最长的滑坡。   区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:    1 2 3 4 5   16 17 18 19 6   15 24 25 20 7   14 23 22 21 8 ... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(276) 评论(0) 推荐(0)
摘要: [代码]不需要swap的Qsort,感觉还不错的说! 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(81) 评论(0) 推荐(0)
摘要: 例16/P-274 设有5位待业者,5项工作,他们各自能胜任 工作的情况如图8-47所示,要求设计一个就业方案,使尽量多的人能就业。 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include "stdio.h" int... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(218) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(428) 评论(0) 推荐(0)
摘要: 算法纲要: 1·找到一个Source。初始化距离为无穷大,d[0]=0。 2·头指针指向source 3·更新所有和它相连的点的距离为W(s,i); 4·head++,重复3;直到没有未访问的节点 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(234) 评论(0) 推荐(0)
摘要: 简单的矩阵乘法。 对于每个状态d[i][j][k] 表示i*j的矩阵里面选出1...K共K个元素。满足状态转移方程: dp[i][j][k]=min{dp[i][j][k-1],dp[i][k][k]+dp[k][j][k]},特殊的,有:当k=0时,dp[i][j][0]=w(i,j)。此乃递归解法。 附件:FLOYED算法 过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 从图的带权邻接矩... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(471) 评论(0) 推荐(0)
摘要: 传说中的KMP 字符串匹配的Θ(n)算法。 伪代码: KMP(t,p) { n=length(t);//原子串 m=length(p);//待匹配子串 pi=cpf(p);一个初始化,下面会有解释。 q=0; for(i=1;i0&&p[q+1]!=t[i])q=pi[q];//如果不匹配,移动! if([p+1]==t[i])q++;如果匹配那就下一个 if(q==m)q=pi[q];//完成匹... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(299) 评论(0) 推荐(0)
摘要: #include #define inf 9999 #define max 40 prim(int g[][max],int n) {int lowcost[max],closest[max]; int i,j,k,min; for(i=2;i<=n;i++) //n个顶点,n-1条边 {lowcost[i]=g[1][i]; //初始化 closest[i]=1; //顶点未加入到最小生成树... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(107) 评论(0) 推荐(0)
摘要: #include "stdio.h" #include "stdlib.h" int a[32768]={},length; void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp;//交换函数 } int left(int i) {return 2*i;} int right(int i)... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(189) 评论(0) 推荐(0)
摘要: BY MooNGrace第三讲排序:排数字、字符串(从词组中找词)、图的问题-》变成子图,子图排序----什么叫做排成有序?:排序的操作量正相关于细度。----排到什么样可以?例如某字典:按照首字母排序即可,之后可以直接依次比较。即:排序一直到可以继续操作。----对简单排序算法和快速排序等的熟悉EG.排队,1.按年级-》按班-》按性别-》按身高:需要几次排序?4次----根据四个关键字进行排序,... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(204) 评论(0) 推荐(0)
摘要: I 递归时写程序的途径: if(n>2) return else if(n==2) else if(n==1) else return -1... (1)算法的健壮性 (2)把常出现的放在前面 II 提高递归效率:添加结果数组 III 动态规划 DP是一种思想,不是一个算法 算法-冒泡排序 采用一个固定的方法,能解决一定的问题 技巧-递归、优化(写程序的技法) 没有固定的适用范围 策略... 阅读全文
posted @ 2008-10-31 11:20 SЁv⑦ēЙ 阅读(214) 评论(0) 推荐(0)