摘要:
1、概念引入 基于统计先验知识,我们可统计出一个数表(集合)中各元素的查找概率,理解为集合各元素的出现频率。比如中文输入法字库中各词条(单字、词组等)的先验概率,针对用户习惯可以自动调整词频——所谓动态调频、高频先现原则,以减少用户翻查次数。这就是最优二叉查找树问题:查找过程中键值比较次数最少,或者说希望用最少的键值比较次数找到每个关键码(键值)。为解决这样的问题,显然需要对集合的每个元素赋予一个特殊属性——查找概率。这样我们就需要构造一颗最优二叉查找树。2、问题给出 n个键{a1,a2,a3......an},其相应的查找概率为{p1,p2,p3......pn}。构成最优BST,表示为.. 阅读全文
摘要:
1、问题引入 带权有向图中单源点的最短路径问题可以用地杰斯特拉算法求解,如果要求解图中每一对顶点之间的最短路径,类似可以想到的方法为:每次以一个顶点为源点,重复执行地杰斯特拉算法算法n次,这样,便可以求得每一对顶点之间的最短路径,总的执行时间为O(n3)。 这里可以采用另外一种求解算法:Floyd算法。2、Floyd的基本思想为: 从邻接矩阵a开始进行n次迭代,第一次迭代后a[i,j]的值是从vi到vj且中间不经过变化大于1的顶点的最短路径长度;第k次迭代后a[i,j]的值是从vi到vj且中间不经过变化大于k的顶点的最短路径长度 第n次迭代后a[i,j]的值就是从vi到vj的最短路径长度... 阅读全文
摘要:
1、问题引入 在带权有向图中求解某个源点到其余各个顶点的最短路径一般可以采用迪杰斯特拉算法(Dijkstra算法)。2、算法的主体思想:引用:(http://hi.baidu.com/wangziming/blog/item/d352be19d53e554642a9ad62.html)A、找到v——Other所有路径中的的最短路径vd=v——d(Other的一个元素);B、找到v——S——Other所有路径中的的最短路径vi=v——i(Other的一个元素);C、比较vd和vi如果vd<=vi则将d加入S且从Other中删除,否则将i加入S且从Other中删除。重复以上步骤直至Other 阅读全文
摘要:
问题描述: 运用高斯消元法求解线性方程组的解集,其中线性方程组的表示方式为:例如:2x+4y=5 2x+y=2存储在二维数组中形式为a[2][3]={{2,4,5,},{2,1,2}}具体代码实现如下: 1 #include<malloc.h> 2 #include<stdio.h> 3 #include<iostream.h> 4 void Gauss(double **A,int n) 5 { 6 int i,j,k; 7 for(k=0;k<n-1;++k) 8 for(i=k+1;i<n;++i) 9 for(j=k+1;j<=n; 阅读全文
摘要:
1.问题描述如下:经过分析后算法如下:v(i,j)表示前j个物品中能够放入承重量为j的包中的最大价值。。。。2.具体的代码实现如下: 其中2.txt中的具体数据为: 代码:View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 void maxValue(int *,int *,int **,int,int); 4 int ziji(int *,int *,int *,int **,int,int); 5 int max(int,int); 6 void main() 7 { 8 int i,k,nu... 阅读全文
摘要:
问题描述如下:具体解决方案如下:{ 其中2.txt中保存的数据为:} 1 #include<stdio.h> 2 #include<stdlib.h> 3 int m; 4 void dqta(int **data,int **d); 5 int max(int,int); 6 void fpath(int **data,int **d,int *path); 7 void main() 8 { 9 int i,j;10 FILE *p;11 p=fopen("2.txt","r");12 if(p==NULL)13 {14 pr 阅读全文
摘要:
问题描述如下:具体代码实现: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #define x 9999 4 #define max 9999 5 int data[10][10]; 6 int dist[10];//记录最短路径为多少 7 int path[10];//记录最短路径 8 int kmin(int,int); 9 void fpath(int a[][10]);10 int froute(int a[][10]);11 void main()12 {13 int i,m;14 int a[10][10]={15 { 阅读全文