问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++数据结构课程设计,医院选址

发布网友 发布时间:2022-05-10 13:14

我来回答

2个回答

热心网友 时间:2023-10-10 01:01

#include <iostream>
using namespace std;
#define MaxInt 10000//最大数
const int MaxNumEdges=50;
const int MaxNumVertices=10; //最大顶点数
class Graph{
private:
int vNum;//当前顶点数
int eNum;//当前边数
int Vertex[MaxNumVertices];//顶点数组
int Edge[MaxNumVertices][MaxNumVertices];//边数组
bool GetVertexPos(const int &vertex,int &i);//给出顶点vertex在图中的位置
public:
Graph(const int sz= MaxNumEdges);//构造函数
bool FindVertex(const int &vertex);
bool InsertVertex(const int & vertex);//插入一个顶点vertex
bool InsertEdge(const int v1,const int v2,const int weight);//插入一条边(v1,v2),该边上的权值为weight
void Hospital();//医院选址函数
};
Graph::Graph(const int sz): vNum(0), eNum(0)//构造函数
{
int n,e;
int name,tail,head;
int weight;
for(int i=0;i<sz;i++)
for(int j=0;j<sz;j++)
{
if(i==j)
Edge[i][j]=0;//顶点到自身权值为0
else
Edge[i][j]=10000;//邻接矩阵初始化为最大值
}
cout<<"请输入顶点数,注意本程序最多为10个。\n";
cin>>n;
cout<<"请依次输入顶点名称:\n";
for(i=0;i<n;i++)//依次输入顶点,插入图中
{
cin>>name;
InsertVertex(name);
vNum++;

}
cout<<"请输入边数:\n";
cin>>e;
cout<<"以下输入边信息。\n";
for(i=0;i<e;i++){
cout<<"请输入第"<<i+1<<"边头顶点:\n";
cin>>head;
cout<<"请输入该边尾顶点:\n";
cin>>tail;
cout<<"请输入该边权值:\n";
cin>>weight;
if(!InsertEdge(head,tail,weight)){
cout<<"不存在该边,请重输!\n";
continue;
}
}
}
bool Graph::FindVertex(const int& vertex){//给出顶点vertex在图中的位置
for (int i = 0; i < vNum; i++)
if (vertex == Vertex[i])
return true;
return false;
}
bool Graph:: GetVertexPos(const int &vertex,int &i){//给出顶点vertex在图中的位置
for (i = 0; i < vNum; i++)
if (vertex == Vertex[i])
return true;
return false;
}
bool Graph::InsertVertex(const int & vertex){//插入一个顶点vertex
if (FindVertex(vertex))
return false;
Vertex[vNum] = vertex;
return true;
}

bool Graph::InsertEdge(const int v1,const int v2,const int weight){
//插入一条边(v1,v2),该边上的权值为weight
int k=0,j=0;
if(GetVertexPos(v1,k) && GetVertexPos(v2,j)){
Edge[k][j]=weight; eNum++;
Edge[j][k]=weight; eNum++;
return true;
}
else
return false;
}
void Graph::Hospital()
//在以邻接带权矩阵表示的n个村庄中,求医院建在何处,使离医院最远的村庄到医院的路径最短。
{
int k,i,j,s;
for (k=0;k<vNum;k++) //求任意两顶点间的最短路径
for (i=0;i<vNum;i++)
for (j=0;j<vNum;j++)
if (Edge[i][k]+Edge[k][j]<Edge[i][j])
Edge[i][j]=Edge[i][k]+Edge[k][j];
int m=MaxInt; //设定m为机器内最大整数。

cout<<"********************************************"<<endl;
//以下为求各村离医院最近的医院选址
int min=MaxInt ; //设定机器最大数作村庄间距离之和的初值。
k=0; //k设医院位置。

for (j=0;j<vNum;j++){
m=0 ;
for (i=0;i<vNum;i++) m=m+Edge[i][j]; //顶点到其它顶点最短距离的距离之和
if (min>m) { min=m ;k=j;} //取顶点间的距离之和的最小值。
}//for

cout<<"各村离医院最近的医院选址,要建医院的村庄号:"<<k+1<<'\n'; //输出要建医院的村庄号
//输出要建医院的村庄号及离医院最远的村庄到医院的距离
for(j=0;j<vNum;j++)
if(j!=k)
cout<<"该村庄离"<<j+1<<"村庄最短距离为:"<<Edge[k][j]<<'\n';
}//算法结束
int main(int argc, char* argv[])
{
Graph Town(MaxNumVertices);
Town.Hospital();
return 0;
}

热心网友 时间:2023-10-10 01:02

建议还是拿本数据结构或者算法的书出来照着搞,图论的东西都是比较复杂的,多练练手对你有好处
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么样才能聚财 花呗额度怎么提升最快? 还在为word排版而发愁?word的实验报告模板&amp;word数学建模模板免费领... 如何鉴定骨伤是新伤和陈旧伤 夕阳无限好只是近黄昏古诗 ...其他人都无问题,确定网络连接无问题,请问是什么原因? 描写花朵从花蕾到开放的句子 描写花蕾的优美句子 ...毒毛和鲜艳色斑,一般食虫鸟不敢捕食,这在生物学上属于…( )A.保护... 安徽名人出身地 一切从实际出发的哲学道理分析为什么武汉的火神山医院的选址在蔡甸 申请信用贷款15万 最快多久就能到账 成都一住宅区周边建方舱引发热议,这个选址合适吗? 医院选址问题 医院选址距离与居民区要求 环评上医院选址有什么要求? 院外急救检伤分类应该遵循哪些原则 简述院外急救有哪些特点 “女子为北京站昏迷男子做人工呼吸”引热议,遇到突然昏迷的人该如何急救? 院前急救三要素的组成包括哪些 院外急救转运中的监护和护理包括哪些 求救护知识30题 阿尔及利亚的钢结构生产商skype号谁有 急啊!!我买了一张20元的联通话费充值卡,怎么样才可以充值到支付宝上,因为支付宝最少冲30的! 钢结构多少钱一平方?钢构宝APP有很多钢结构公司,在上面发布,会有钢结构公司主动联系我? 用建行的网银一次性最多可以充多少钱到支付宝 怎么做钢结构业务 在长沙建300平米普通钢结构厂房大概需多少钱? 我的支付宝没钱了,但是银行说每次最少冲500元,请问这意思是往支付宝里最少冲500,还是银行卡里? 支付宝一次最少要充多少 四川成都一居民楼学校周边建方舱医院,你觉得方舱医院修建在哪里最为合适? 在县级开办精神病专科医院的选址有哪些要求? C++编程实现医院选址问题 医院选址有规定吗 医院建成后,附近土地是否有相应的规划限制? *甲等医院建设选址上有啥要求和规定,涉及环境方面的评估是怎样的 医院选址要求 单开门的冷藏柜多重 手指甲上有了鼓包是怎么回? 人都说手指甲鼓起来好,我的手直接是扁平的不怎么鼓 他们都说是我缺钙。是真的吗? 妈妈的手指甲是这样凹下去的 以前是平平的(正常的不应该是鼓的吗) 现在就变成这样了 凹下去了 看着 请教达人:央视6套“中国武侠电影人物志”片尾是由哪些武侠电影片段剪辑而成? 武侠电影绝色美人大剪辑,你觉得哪个最有气质 摄影技术的发展对武侠片的拍摄起到了哪些作用 入室盗窃500元罪量刑标准 找视频片段,求武侠片中有武林秘籍快速翻页,之后练习的的片段 影视剧坛中许多武打电影有很多精彩的瞬间,其中哪些精彩的打斗片让你念念不忘? 求一部老武侠电影的名字 徐克的一个电影剪辑,百度推荐视频里面的。有很多武侠,讲剑,讲情等。找不到了 盗窃500元以下会有什么处罚