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

医院选址问题

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

我来回答

2个回答

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

#include <dos.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define INFINITY 10000 //定义权值的最大值
#define MAX_NUM 20 //图的最大顶点数
enum BOOL {False,True};
typedef struct
{
int arcs[MAX_NUM][MAX_NUM]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点和边数
}Graph;
void CreateGraph(Graph &); //生成图的邻接矩阵
void ShortestPath_Floyd(Graph,BOOL[][MAX_NUM][MAX_NUM],int[][MAX_NUM]);
//用弗洛依德算法求每对顶点之间的最短路径
void CreateRGraph(Graph &G); //生成随机图

void main()
{
Graph G; //采用邻接矩阵结构的图
int u,i;
BOOL P[MAX_NUM][MAX_NUM][MAX_NUM]; //存放每对顶点的最短路径
int D[MAX_NUM][MAX_NUM]; //存放每对顶点的最短路径的距离
do{ //从菜单中选择遍历方式,输入序号。
printf("\t********** select ************\n");
printf("\t1: 根据输入数据寻找最佳村庄\n");
printf("\t2: 随机生成村庄数与道路数进行测试\n");
printf("\t0: Exit\n");

printf("\t*******************************\n");
scanf("%d",&i); //输入菜单序号(0-2)
switch (i){
case 1: printf("首先输入村庄数目(2-19)和道路数目:\n例如:3,5\n");
printf("接着输入道路的起点和终点(i,j)及其路程。\n例如:\n1,2,4\n2,1,6\n1,3,11\n3,1,3\n2,3,2\n");
CreateGraph(G); //生成邻接矩阵结构的图
ShortestPath_Floyd(G,P,D); //利用弗洛依德算法求最短路径
break;
case 2: printf("随机产生的村庄数目与道路数目:");
CreateRGraph(G); //生成邻接矩阵结构的图
ShortestPath_Floyd(G,P,D); //利用弗洛依德算法求最短路径
break;
default: exit(1);
}
printf("\n");
}while(i!=0);
}

void CreateGraph(Graph &G)
{
//构造邻接矩阵结构的图G
int i,j,k;
int start,end,weight;
do{
printf("请输入村庄数目(2-19)和道路数目,格式:村庄数目,道路数目\n");
scanf("%d,%d",&G.vexnum,&G.arcnum); //输入图的顶点数和边数
k=G.vexnum*(G.vexnum-1);
if(G.arcnum>k)
printf("error!!\n");
}while(G.arcnum<1||G.arcnum>k);
for(i=1;i<=G.vexnum;i++)
for(j=1;j<=G.vexnum;j++)
G.arcs[i][j]=INFINITY; //初始化邻接矩阵
printf("请输入道路的起点和终点(i,j)及其路程,格式:起点,终点,路程:\n");
for(i=1;i<=G.arcnum;i++)
{scanf("%d,%d,%d",&start,&end,&weight); //输入边的起点和终点及权值
G.arcs[start][end]=weight;
}
}

void CreateRGraph(Graph &G)
{ //构造邻接矩阵结构的随机图G
int i,j;
int start,end,weight;
srand((unsigned)time(NULL));
G.vexnum=(rand()%(21-1))+1;
G.arcnum=(rand()%(G.vexnum*(G.vexnum-1)+1-1))+1;
printf("随机产生的医院数目与道路数目:%d,%d\n",G.vexnum,G.arcnum);//输出随机产生的医院与道路数目
for(i=1;i<=G.vexnum;i++)
for(j=1;j<=G.vexnum;j++)
G.arcs[i][j]=INFINITY; //初始化邻接矩阵
for(i=1;i<=G.arcnum;i++)
{do{
start=(rand()%(G.vexnum+1-1))+1;
end=(rand()%(G.vexnum+1-1))+1;
weight=(rand()%(10000-1))+1;
}while((start==end)||(G.arcs[start][end]!=INFINITY));
printf("随机产生的第%d条道路起点,道路终点与距离:%d,%d,%d\n",i,start,end,weight);
G.arcs[start][end]=weight;}
}

void ShortestPath_Floyd(Graph G,BOOL P[][MAX_NUM][MAX_NUM],int D[][MAX_NUM])
{
//用弗洛依德算法求有向网G的每对顶点v和w之间的最短路径P[v][w]
//及其带权路径长度D[v][w],
//若P[v][w][u]为True,表明u是从v到w当前求得最短路径上的顶点
int u,v,w,i,j,k,x;
int a[21]; //最短路径求和数组
for(v=1;v<=G.vexnum;v++) //各对顶点之间的初始已知路径及距离
for(w=1;w<=G.vexnum;w++)
{D[v][w]=G.arcs[v][w];
for(u=1;u<=G.vexnum;u++) P[v][w][u]=False;
if(D[v][w]<INFINITY) //从v到w有直接路径
{P[v][w][v]=True;P[v][w][w]=True;}
}
{ for(u=1;u<=G.vexnum;u++)
for(v=1;v<=G.vexnum;v++)
for(w=1;w<=G.vexnum;w++)
if(D[v][u]+D[u][w]<D[v][w]&&v!=w) //从v经u到w的一条路径更短
{D[v][w]=D[v][u]+D[u][w];
for(i=1;i<=G.vexnum;i++)
if(P[v][u][i]||P[u][w][i]) P[v][w][i]=True;
}
}
printf("生成的最短路径的邻接矩阵为:\n");
for(v=1;v<=G.vexnum;v++)
{for(w=1;w<=G.vexnum;w++)
printf("%7d", D[v][w]);
printf("\n");}

printf("最短路径求和数组为:");
for(w=1;w<=G.vexnum;w++)
{{j=0;
for(v=1;v<=G.vexnum;v++)
j=j+D[v][w];
} //顶点到其它顶点最短距离的距离之和
a[w]=j;
printf("%7d",a[w]);}

printf("\n");
x=a[1];k=1;
for(w=1;w<=G.vexnum;w++)
{
if(a[w]<x)
{x=a[w];
k=w;}
}
printf("最适合建医院的村庄为:%d\n",k);
}

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

把医院选在离医院最远的村庄
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
推荐一款在卧室听的音响,最好带CD,带收音机,可插U盘,价格1000以内!尽量... 求问,近几年还会有类似于声之形、你的名字这样的动漫电影么w_百度... 苦学包括什么 北京世纪百奥科技有限公司怎么样? 居住证积分需要哪些材料 上海办居住证积分需要什么资料 居住证积分有哪些材料 如何建立良好的家庭情感氛围 如何让家庭氛围更快乐 如何营造一个欢乐轻松的家庭氛围呢? 医院选址距离与居民区要求 环评上医院选址有什么要求? 院外急救检伤分类应该遵循哪些原则 简述院外急救有哪些特点 “女子为北京站昏迷男子做人工呼吸”引热议,遇到突然昏迷的人该如何急救? 院前急救三要素的组成包括哪些 院外急救转运中的监护和护理包括哪些 求救护知识30题 阿尔及利亚的钢结构生产商skype号谁有 急啊!!我买了一张20元的联通话费充值卡,怎么样才可以充值到支付宝上,因为支付宝最少冲30的! 钢结构多少钱一平方?钢构宝APP有很多钢结构公司,在上面发布,会有钢结构公司主动联系我? 用建行的网银一次性最多可以充多少钱到支付宝 怎么做钢结构业务 在长沙建300平米普通钢结构厂房大概需多少钱? 我的支付宝没钱了,但是银行说每次最少冲500元,请问这意思是往支付宝里最少冲500,还是银行卡里? 支付宝一次最少要充多少 做钢结构建筑的,想知道怎么在网上接活? 钢结构细化私活怎么接,有提供个钢结构细化发布的平台没? 高级安全 Windows防火墙管理单元无法加载。请重新启动正在管理的计算机上的Windows防火墙服务。 我是做二手钢结构厂房买卖的,怎么推广我的网页呀? 成都一住宅区周边建方舱引发热议,这个选址合适吗? 申请信用贷款15万 最快多久就能到账 一切从实际出发的哲学道理分析为什么武汉的火神山医院的选址在蔡甸 C++数据结构课程设计,医院选址 四川成都一居民楼学校周边建方舱医院,你觉得方舱医院修建在哪里最为合适? 在县级开办精神病专科医院的选址有哪些要求? C++编程实现医院选址问题 医院选址有规定吗 医院建成后,附近土地是否有相应的规划限制? *甲等医院建设选址上有啥要求和规定,涉及环境方面的评估是怎样的 医院选址要求 单开门的冷藏柜多重 手指甲上有了鼓包是怎么回? 人都说手指甲鼓起来好,我的手直接是扁平的不怎么鼓 他们都说是我缺钙。是真的吗? 妈妈的手指甲是这样凹下去的 以前是平平的(正常的不应该是鼓的吗) 现在就变成这样了 凹下去了 看着 请教达人:央视6套“中国武侠电影人物志”片尾是由哪些武侠电影片段剪辑而成? 武侠电影绝色美人大剪辑,你觉得哪个最有气质 摄影技术的发展对武侠片的拍摄起到了哪些作用 入室盗窃500元罪量刑标准 找视频片段,求武侠片中有武林秘籍快速翻页,之后练习的的片段