第十三周项目1-prim算法的验证
来源:互联网 发布:穆雅斓淘宝店铺改名了? 编辑:程序博客网 时间:2024/05/21 10:18
/** Copyright (c)2015,烟台大学计算机与控制工程学院* All rights reserved.* 文件名称:prim.cbp* 作 者:李涵睿* 完成日期:2015年11月23日* 版 本 号:v1.0* 问题描述:Prim算法的验证。* 输入描述:无* 程序输出:测试数据*/
头文件和源文件见【图的算法库】
#include <iostream>#include <stdio.h>#include <malloc.h>#include "graph.h"using namespace std;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;}
运行结果:
知识点总结&学习心得:
搞明白lowcost和closet,将一步步的实现过程画出来。
0 0
- 第十三周项目1Prim 算法验证
- 第十三周项目1-Prim算法验证
- 第十三周项目1---(1)Prim算法的验证
- 第十三周项目1--Prim算法的验证
- 第十三周项目1-Prim算法的验证
- 第十三周项目一(1)Prim算法的验证
- 第十三周 项目1-prim算法的验证
- 第十三周项目1-Prim算法的验证
- 第十三周项目1Prim算法的验证
- 第十三周项目1-prim算法的验证
- 第十三周项目1-Prim算法的验证
- 第十三周项目1-Prim算法的验证
- 第十三周--项目1- Prim算法的验证
- 第十三周项目1-Prim算法的验证
- 第十三周项目1-prim算法的验证
- 第十三周项目1-Prim算法的验证
- 【第十三周 项目1-Prim算法的验证】
- 第十三周项目1-Prim算法的验证
- 第十四周项目4算法验证--平衡二叉树
- 我的android错误集
- 第十四周——【项目1 - 验证算法】验证折半查找算法
- CSS
- 第八周项目5-计数的模式匹配
- 第十三周项目1-prim算法的验证
- uiwebview
- 第十四周 项目2 线性表的折半查
- 第十二周项目2—操作用邻接表存储的图
- 数据结构——双向链表(Java实现)
- 分布式事务——Spring4+Hibernate4+atomikos
- 第14周、项目1—验证算法 (4)
- sublime text3 emmet插件安装
- C++primer plus第六版课后编程练习答案11.2