贪心算法设计实验报告(2)
**************************************************************************************/
void Prim(int **Graph,int num_v)//转化为对上三角的维护 { int i,j,leap=0,temp; int m,n,min;
int *a=(int *)malloc(sizeof(int)*num_v); for(i=0;i<num_v;i++)
a[i]=0;
a[0]=1;
while(leap!=num_v-1) { min=INF;
for(i=0;i<num_v;i++)//搜索上三角中的最小值 { if(a[i]==1) { for(j=i+1;j<num_v;j++)//行中搜索 { if(min>Graph[i][j]&&Graph[i][j]>0) { min=Graph[i][j]; m=j; n=i; temp=0;
}
}
for(j=0;j<i;j++)//列中搜索 { if(min>Graph[j][i]&&Graph[j][i]>0) {
min=Graph[j][i];
/* for(i=0;i<num_v;i++)//检查矩阵中在那些行(列)可以选择最小值(即那些列和行是候选行和列)
printf("%-4d",a[i]);
}
}
}
}
m=j; n=i; temp=1;
if(temp==0)//为了区别出是在行还是在列中搜索到的元素 else
Graph[m][n]=-1; Graph[n][m]=-1;
for(i=0;i<m;i++)//去掉行中回路边 { }
for(i=m+1;i<num_v;i++)//去掉列中回路边 { } a[m]=1;
if(a[i]==1&&Graph[m][i]>0) { }
Graph[m][i]=INF; if(a[i]==1&&Graph[i][m]>0) { }
Graph[i][m]=INF;
printf("\n");*/
/* for(i=0;i<num_v;i++)//检验对上三角的维护,和下三角是否修改了(下三角保存了原树和用于输出最小生成树) }
void main() {
Graph=(int**)malloc(sizeof(int*)*num_v);//动态生成二维数组用来存储图(邻接矩阵) for(i=0;i<num_v;i++)
for(i=0;i<num_v;i++)//初始化矩阵
for(j=0;j<num_v;j++)
}
{ }*/ leap++;
for(j=0;j<num_v;j++)
printf("%-4d\t",Graph[i][j]);
printf("\n");
int i,j;
int num_v,num_e; int **Graph=NULL; char *V=NULL; char ch_1,ch_2; int weight; int m,n;
printf("请输入图的顶点数:"); scanf("%d",&num_v);
V=(char*)malloc(sizeof(char)*num_v);
Graph[i]=(int*)malloc(sizeof(int)*num_v);
Graph[i][j]=INF;
for(i=0;i<num_v;i++)
Graph[i][i]=0;
for(i=0;i<num_v;i++) { printf("请输入第%d个顶点:",i+1); scanf(" %c",&V[i]); }
printf("请输入图的边数:"); scanf("%d",&num_e); for(i=0;i<num_e;i++) { printf("请输入第%d条边的顶点和权值:",i+1); scanf(" %c %c%d",&ch_1,&ch_2,&weight); for(j=0;j<num_v;j++) { if(V[j]==ch_1)
m=j;
if(V[j]==ch_2)
n=j;
}
Graph[m][n]=weight; Graph[n][m]=weight;
}
//以上是对图用邻接矩阵存储
//------------------------------------------------------------------------------------ Prim(Graph,num_v);
printf("最小生成树如下:\n");
}
printf("顶点----------------顶点-----------------权值\n"); weight=0;
for(i=0;i<num_v;i++)
for(j=i+1;j<num_v;j++) { }
if(Graph[i][j]==-1) { }
printf(" %-2c ---------------- %-2c ----------------- %-2d\n",V[i],V[j],Graph[j][i]); weight=weight+Graph[j][i];
printf("最小生成树的权重是:%d\n",weight);
六、实验结果与分析
Kruskal算法适用于边稀疏的情形,而Prim算法适用于边稠密的情形
…… 此处隐藏:247字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




