第12周项目1- Prime算法的验证
2017-12-14 11:10
423 查看
/*
* Copyright(c) 2017,烟台大学计算机学院
* All rights reserved.
* 文件名称:cpp1.
* 作 者:宋昊
* 完成日期:2017 年 12 月 5 日
* 版 本 号:v1.0
*
* 问题描述: Prime算法的验证
* 输入描述:无需输入
* 程序输出:实现各种算法的函数的测试结果
*/
运行结果:
* Copyright(c) 2017,烟台大学计算机学院
* All rights reserved.
* 文件名称:cpp1.
* 作 者:宋昊
* 完成日期:2017 年 12 月 5 日
* 版 本 号:v1.0
*
* 问题描述: Prime算法的验证
* 输入描述:无需输入
* 程序输出:实现各种算法的函数的测试结果
*/
#include <stdio.h> #include <malloc.h> #include "graph.h" void Prim(MGraph g,int v) { int lowcost[MAXV]; //顶点i是否在U中 int min; int closest[MAXV],i,j,k; for (i=0; i<g.n; i++) //给lowcost[]和closest[]置初值 { lowcost[i]=g.edges[v][i]; closest[i]=v; } for (i=1; i<g.n; i++) //找出n-1个顶点 { min=INF; for (j=0; j<g.n; j++) //在(V-U)中找出离U最近的顶点k if (lowcost[j]!=0 && lowcost[j]<min) { min=lowcost[j]; k=j; //k记录最近顶点的编号 } printf(" 边(%d,%d)权为:%d\n",closest[k],k,min); lowcost[k]=0; //标记k已经加入U for (j=0; j<g.n; j++) //修改数组lowcost和closest if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j]) { lowcost[j]=g.edges[k][j]; closest[j]=k; } } } int main() { MGraph g; int A[6][6]= { {0,10,INF,INF,19,21}, {10,0,5,6,INF,11}, {INF,5,0,6,INF,INF}, {INF,6,6,0,18,14}, {19,INF,INF,18,0,33}, {21,11,INF,14,33,0} }; ArrayToMat(A[0], 6, g); printf("最小生成树构成:\n"); Prim(g,0); return 0; }
运行结果:
相关文章推荐
- 第12周项目3- Prime算法的验证
- 第12周【项目 - 验证算法】
- 第12周 【项目1 - 验证算法】
- 第12周项目1-验证算法
- 第十二周项目一——Prime算法的验证
- 第十四周项目1-验证算法(4)-平衡二叉树算法
- 第15周项目1-验证算法
- 第11周项目1-验证算法(4)哈夫曼编码的算法验证
- 第11周项目1-验证算法(4)哈夫曼编码的算法验证
- 第十四周——项目一验证算法(2)插入排序之直接插入排序
- 第十四周项目1-(4)验证平衡二叉树相关算法
- 第十五周项目四 验证算法——直接插入排序
- 第11周项目1-验证算法(3)中序线索化二叉树的算法验证
- 第十五周 项目1 - 验证算法
- 第十周 项目一(4)哈夫曼编码的算法验证
- 第十一周项目一:验证算法(3)中序线索化二叉树二叉树的算法验证
- 第十周 【项目1 - 中序线索化二叉树的算法验证(3)】
- 第13周项目1-Prim的算法验证
- 【第十周】项目1-层次遍历算法的验证
- 第十三周项目—算法验证(2)