当前位置: 首页 > news >正文

网站建设推广软件网站价值 批量查询

网站建设推广软件,网站价值 批量查询,完成网站建设的心得体会,租赁服务器1)问题描述 n个村庄之间的交通图可以用有向网图来表示#xff0c;图中边vi, vj上的权值表示从村庄i到村庄j的道路长度。现在要从这n个村庄中选择一个村庄新建一所医院#xff0c;问这所医院应建在哪个村庄#xff0c;才能使所有的村庄离医院都比较近#xff1f; 2)… 1)问题描述 n个村庄之间的交通图可以用有向网图来表示图中边vi, vj上的权值表示从村庄i到村庄j的道路长度。现在要从这n个村庄中选择一个村庄新建一所医院问这所医院应建在哪个村庄才能使所有的村庄离医院都比较近 2) 基本要求 (1) 建立模型设计存储结构 (2) 设计算法完成问题求解 (3) 分析算法的时间复杂度。 3) 设计思想 医院选址问题实际是求有向图中心点的问题。首先定义顶点的偏心度。 设图GVE对任一顶点k称E(k)max{d(i, k)}i∈V为顶点k的偏心度。显然偏心度最小的顶点即为图G的中心点。 如图3(a)所示是一个带权有向图其各顶点的偏心度如图(b)所示。   4)医院选址问题的算法用伪代码描述如下 1对加权有向图调用Floyd算法求每对顶点间最短路径长度的矩阵 2对最短路径长度矩阵的每列求大值即得到各顶点的偏心度 3具有最小偏心度的顶点即为所求。 5)代码附录 1 #includestdio.h2 #includestdlib.h3 #includestring.h4 #define INFINITY 10000005 #define MAX_VERTEX_NUM 206 7 //定义弧的权值信息8 typedef struct Arccell9 {10 int adj; //权值11 } Arccell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //图的邻接矩阵12 //定义结点信息13 typedef struct VertexInfo14 {15 char name[20];//结点[村庄]名称16 int position;//定点编号17 } VertexInfo;18 //图的结构19 typedef struct Mgraph20 {21 VertexInfo vexs[MAX_VERTEX_NUM];//顶点数组22 AdjMatrix arcs;//邻接矩阵23 int vernum,arcnum;//分别指定顶点数和边数24 } Mgraph;25 26 27 //对图的初始化28 Mgraph initgraph()29 {30 Mgraph c;31 printf(请输入该图的顶点个数和弧的个数\n);32 printf(顶点个数);33 scanf(%d,c.vernum);34 printf(弧的个数);35 scanf(%d,c.arcnum);36 //依次设置顶点编号37 for(int i0; ic.vernum; i)38 {39 c.vexs[i].positioni;40 }41 //依次输入各顶点信息42 /*43 strcpy(c.vexs[0].name,a);44 strcpy(c.vexs[1].name,b);45 strcpy(c.vexs[2].name,c);46 strcpy(c.vexs[3].name,d);47 strcpy(c.vexs[4].name,e);48 49 */50 printf(\n请依次输入各个村庄的名称\n);51 for(int i0;ic.vernum;i)52 {53 printf(村庄%d:,i);54 scanf(%s,c.vexs[i].name);55 56 }57 58 //依次设置各弧的信息59 for(int i0; ic.vernum; i)60 {61 //先初始化邻接矩阵,相同点设置为0其他全部设置为INFINITY无穷大62 for(int j0; jc.vernum; j)63 {64 c.arcs[i][j].adjINFINITY;65 if(ij)66 {67 c.arcs[i][j].adj0;68 }69 }70 }71 //再依次输入需要设置的权值72 int i,j,k;73 printf(请输入需要设置的弧长及其两端顶点[输入3个0结束]\n);74 while(scanf(%d%d%d,i,j,k))75 {76 if(i0j0k0)77 break;78 c.arcs[i][j].adjk;79 }80 /*81 c.arcs[0][1].adj1;82 c.arcs[1][2].adj2;83 c.arcs[2][3].adj2;84 c.arcs[2][4].adj4;85 c.arcs[3][1].adj1;86 c.arcs[3][2].adj3;87 c.arcs[4][3].adj5;88 */89 return c;90 }91 92 //输出邻接矩阵93 void printMatrix(Mgraph c)94 {95 printf(该图的邻接矩阵如下所示\n);96 int count0;//用于计数97 for(int i0; ic.vernum; i)98 for(int j0; jc.vernum; j)99 { 100 if(c.arcs[i][j].adjINFINITY) 101 printf( #); 102 else 103 printf(%4d,c.arcs[i][j].adj); 104 count; 105 if(count%c.vernum0) 106 printf(\n); 107 } 108 } 109 110 void ShortestPath_Floyd(Mgraph G,int dis[][MAX_VERTEX_NUM]) 111 { 112 //用floyd算法求有向网G中各对定点v和w之间的最短路径及其带权长度dis[v][w] 113 for(int v0; vG.vernum; v) 114 for(int w0; wG.vernum; w) 115 { 116 //对各结点之间初始化已知距离 117 dis[v][w]G.arcs[v][w].adj; 118 } 119 120 for(int u0; uG.vernum; u) 121 for(int v0; vG.vernum; v) 122 for(int w0; wG.vernum; w) 123 { 124 if(dis[v][u]dis[u][w]dis[v][w]) 125 { 126 //从v经u到w的路径更短 127 dis[v][w]dis[v][u]dis[u][w]; 128 } 129 } 130 131 } 132 //输出距离矩阵 133 void printDis(Mgraph G,int dis[MAX_VERTEX_NUM][MAX_VERTEX_NUM]) 134 { 135 printf(\n经过Flyod算法之后各顶点之间的距离如下\n); 136 for(int i0; iG.vernum; i) 137 { 138 for(int j0; jG.vernum; j) 139 { 140 if(dis[i][j]1000000) 141 printf( #); 142 else 143 printf(%4d,dis[i][j]); 144 145 } 146 printf(\n); 147 } 148 } 149 150 //得到偏心度degree[]数组 151 void getDegree(Mgraph G,int dis[MAX_VERTEX_NUM][MAX_VERTEX_NUM],int degree[]) 152 { 153 for(int i0;iG.vernum;i) 154 { 155 int maxdis[0][i]; 156 for(int j0;jG.vernum;j) 157 { 158 if(dis[j][i]max) 159 maxdis[j][i]; 160 } 161 degree[i]max; 162 } 163 } 164 165 166 167 int main() 168 { 169 printf(**********欢迎使用医院选址系统*********\n); 170 Mgraph cinitgraph(); 171 system(cls); 172 173 //输出邻接矩阵 174 getchar(); 175 printMatrix(c); 176 177 //定义距离数组调用Floyd算法得到结果 178 int dis[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; 179 ShortestPath_Floyd(c,dis); 180 181 //输出各个顶点之间的距离矩阵 182 getchar(); 183 printDis(c,dis); 184 185 //存放偏心度数 186 int degree[c.vernum]; 187 getDegree(c,dis,degree); 188 189 //显示各顶点的偏心度 190 getchar(); 191 printf(\n各顶点的偏心度如下所示\n); 192 for(int i0;ic.vernum;i) 193 { 194 if(degree[i]1000000) 195 printf( #\n); 196 else 197 printf(%4d\n,degree[i]); 198 } 199 200 //得到最小村庄的编号和名称 201 int num; 202 int mindegree[0]; 203 for(int i0;ic.vernum;i) 204 { 205 if(mindegree[i]) 206 mindegree[i]; 207 } 208 209 for(int i0;ic.vernum;i) 210 { 211 if(mindegree[i]) 212 { 213 numi; 214 break; 215 } 216 } 217 getchar(); 218 printf(\n偏心度最小的村庄编号%4d\n,num);//输出偏心度最小的村庄编号 219 printf(医院应该建立在村庄: %4s \n,c.vexs[num].name); 220 return 0; 221 222 } 6)测试结果 1.首先运行程序出现如图6.1所示。             图6.1  程序运行开始界面 2.输入顶点个数和边的个数之后会提示输入村庄名称如图6.2所示。                           图6.2 提示输入村庄名称界面 3.村庄名称输入结束之后提示输入边的起始点和权值如图6.3所示。                           图6.3 提示输入边相关信息的界面 4.输入边的信息以输入0 0 0结束如图6.4所示。                           图6.4 输入边相关信息界面 5.边的信息输入完成之后回车得到邻接矩阵如图6.5所示。                              图6.5 邻接矩阵表 6.继续回车得到距离矩阵如图6.6所示。                              图6.6 距离矩阵表 7.回车得到偏心度表如图6.7所示。                              图6.7 各顶点偏心度 8.最后程序输出医院选址结果如图6.8所示。                                图6.8 最终结果 转载于:https://www.cnblogs.com/wujiyang/p/4491750.html
http://www.yutouwan.com/news/7679/

相关文章:

  • 扬中网站推广报价网站建设需求表
  • 什么网站可以做二建的题目做网站的功能结构布局
  • 杭州品牌网站建设推广做游戏网站的目地
  • 哪个网站域名便宜做网站需要审批不
  • 如何做网站结构分析网站建设丶金手指下拉11
  • 如何做游戏试玩网站本地网站怎么做
  • 微信平台的微网站怎么做的网站建站网站微信公众号开发
  • h5模板网站免费如何做自己的网站赚钱
  • 产品众筹网站开发屏蔽wordpress头像
  • 大学生活动网站开发文案附近有没有学电脑培训的
  • 百度收录个人网站是什么怎么做做进口货的电商网站
  • 网站开发的问题有哪些长沙生活网
  • 欧美seo查询重庆seo整站优化系统
  • 网站设计技术新网站怎么做才会被收录
  • 网站建设放什么科目广州品牌网站
  • 百度云自助建站电子版产品图册怎么制作
  • 万站群cms服务器有了网站怎么做
  • 青岛做网站找什么公司wordpress+漂亮的博客
  • 北京做网站哪家便宜哪个网站可以改字体
  • 佛山微网站建设报价跨境电商建站
  • 关于网站的ppt怎么做途牛企业网站建设
  • 东营北京网站建设小红书营销策划方案
  • 网站 设计 电商平台制作公司
  • 一起做网店一样的网站赌钱网站怎么做的
  • 网站建设要注意些什么网站建设与管理大作业
  • 网站的建设方向郑州建站以来
  • 几种语言的网站如何做网络公司关键词排名
  • 顺德网站制作公司局网站建设制度
  • 中国建设银行理财网站网站建立具体步骤是
  • 凡科网站免费注册网站单页推广