首页 > 其他分享 >暑假第一天

暑假第一天

时间:2024-07-03 14:21:10浏览次数:20  
标签:distance 第一天 vexnum int index imin AMGraph 暑假

今天下午下学期,我完成了普利姆算法的编写,以下是我的源代码

#include <iostream>
#define MVNum 10
#define MaxInt 32767
using namespace std;

struct edge {
char adjvex;
int lowcost;
}closedge[MVNum];

typedef struct {
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum, arcnum;
}AMGraph;
int LocateVex(AMGraph G, char v);//实现细节隐藏
int Min(AMGraph G);//实现细节隐藏
int CreateUDN(AMGraph& G);//实现细节隐藏

void Prim(AMGraph G, char u);

int main() {
AMGraph G;
CreateUDN(G);
char u;
cin >> u;
Prim(G, u);
return 0;
}
void Prim(AMGraph G, char v)
{
int distance[G.vexnum];
int parent[G.vexnum];
//记录v的下标
int index = 0;
int i, min = MaxInt, imin, count = 0;
// 1.初始化这棵树,即以v为起始点,同时初始化数组distance[]
// 注:distance数组表示该树的任意一点到该点的最小距离

//寻找v的下标
for (i = 0; i < G.vexnum; i++)
{
if (G.vexs[i] == v)
{
index = i;
}

}
for (i = 0; i < G.vexnum; i++)
{
if (i == index)
{
distance[i] = 0;
parent[i] = index;
}
else
{
distance[i] = G.arcs[index][i];
parent[i] = index;
}
}
while (1)
{
if (count == G.vexnum - 1)
{
break;
}

// 2.从小树现有的结点出发,寻找边权值最小的点:
for (i = 0; i < G.vexnum; i++) {
if (min > distance[i] && distance[i] != 0)
{
//记录最小值及其下标
min = distance[i];
imin = i;

}

}
//更新已到达过得节点数

count++;
// 3.找到后输出该边
if (count < G.vexnum - 1)
{
printf("%c->%c\n", G.vexs[parent[imin]], G.vexs[imin]);
}
else
{
printf("%c->%c", G.vexs[parent[imin]], G.vexs[imin]);
}

 


//初始化min以便下次寻找
min = MaxInt;
// 4.将该点的distance数组中的值赋值为0,标记已经遍历过
distance[imin] = 0;
// 5.循环遍历结点,更新distance[]数组
for (i = 0; i < G.vexnum; i++) {
if (distance[i] != 0 && G.arcs[i][imin] < MaxInt)
{
if (distance[i] > G.arcs[i][imin])
{
distance[i] = G.arcs[i][imin];
parent[i] = imin;
}
}
}
}
}

标签:distance,第一天,vexnum,int,index,imin,AMGraph,暑假
From: https://www.cnblogs.com/hlhl/p/18281537

相关文章

  • 给暑假加个ddl 不要再慢慢油油啦!
    其实是暑假规划及详细ddl及实际完成情况的记录。算法刷题(速度刷题)(多刷多思考)(别想太慢)打比赛(有则打之)(及时补题)ddl刷完算法基础课和提高课加油Javajava的预习希望可以尽量预习多一点,但不要像寒假那样只是入门一点点背单词把六级的英语单词背完吧(要的所以闲暇的化可......
  • 24暑假赛训合集
    谢谢,你关注的鸽子博主更新了。上赛季末段没能忍住网瘾,转生成ACMer了和队友一起拿了块邀请赛金牌和省赛冠军,下半年区域赛不想拖后腿所以还是得努努力啊。但是因为博主还要跑科研实验以及机器人比赛的事情,所以大概一天只能看几个题下列列出的√为自己想出来的,×为看了题......
  • 暑假集训
    6.27复活赛打赢了,STA_Morlin返场!!1从jijidawang那里要了洛天依的遗物。(请提醒我补图。)收拾宿舍的时候发现忘带枕头和被子了(和xrlong,master,Charlie在一个宿舍。jijidawang又是跑到APJ那边去了。据filed说我们将要搬到HZ本部。filed还说了下作息时间表,wkh说要打印......
  • zhe_暑假生活_2024
    自学   英语      每天英语单词5个记录、5个就单词朗读      初中英语阅读与完形      初中英语语法与词汇      新概念英语      六下_培优   语文      每天摘抄优秀作文      古诗视频      西游记......
  • 初识vs code之第一天
    初步创建一个放置代码的文件夹在vscode中选择打开文件夹选项,选中建立的文件夹确定即可在编辑器中选择文件夹右下方文件+号,接着输入所要创建的代码名称 设置编译模式:c_cpp_properties.json完成代码输入之后,鼠标在其代码界面,按CTRL+shift+p快捷键,在弹出的界面中选择:C/C++编辑配......
  • 【暑假Python上岸计划】最新20+Python实战案例,全程干货,30天看完即可接单就业!(基础+进阶
    前言今天给大家分享20+个基于python的实战案例,主要包含:数据分析、可视化、机器学习/深度学习、时序预测等,案例的主要特点:*提供源码:代码都是基于jupyternotebook,附带一定的注释,运行即可*数据齐全:大部分案例都有提供数据,部分案例使用内置数据集学习资料已打包,需要......
  • 补充第一天的python学习笔记
    昨天晚上学习到10点左右太困了,没有完成既定目标,迁延一日。补充下昨天的学习内容,算是对第一天学习时的回顾。1.字符集编码(1)utf-8全球通用,一个字节等于8个二进制位,utf-8用于中文占3个字节(2)unicode全球通用,16位二进制以上(3)gbk专为中国人设计的编码,一个文字占2个字节......
  • 团队开发sprint 第一天
    2024-04-19项目任务进展: 6小时(6/50)会议照片过去一天完成了哪些任务今日主要是对后续任务和工作的细化分配和对课程情况和空余时间的讨论与协调确定flutter+Springboot开发心理健康程序,并内置chat-gpt完成了环境的安装接下来的计划对flutter和Springboot进行学......
  • 团队冲刺第一天
    过去一天完成了哪些任务今日主要是对后续任务和工作的细化分配和对课程情况和空余时间的讨论与协调确定flutter+Springboot开发心理健康程序,并内置chat-gpt完成了环境的安装接下来的计划对flutter和Springboot进行学习并尝试进行软件功能的开发对软件基本框架进行搭......
  • Hbuilder创建项目,制作html网页第一天
    1、引入js文件<scriptsrc="js/pixi.min.js"></script>2、创建应用varapp=newPIXI.Application(500,600);//宽500,高6003、将应用放进页面document.body.appendChild(app.view);4、创建背景元素varbg=newPIXI.Sprite.fromImage("img/bg.jpg");5、将背景元素放进界......