学校超市选址问题 (2)

上传人:F****n 文档编号:103422466 上传时间:2019-10-07 格式:DOC 页数:9 大小:122.50KB
返回 下载 相关 举报
学校超市选址问题 (2)_第1页
第1页 / 共9页
学校超市选址问题 (2)_第2页
第2页 / 共9页
学校超市选址问题 (2)_第3页
第3页 / 共9页
学校超市选址问题 (2)_第4页
第4页 / 共9页
学校超市选址问题 (2)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《学校超市选址问题 (2)》由会员分享,可在线阅读,更多相关《学校超市选址问题 (2)(9页珍藏版)》请在金锄头文库上搜索。

1、 题目: 学校超市选址问题目录第 1 章 需求分析2第 2 章 总体设计32.1 文字描述32.2 程序流程图3第 3 章 详细设计43.1 数据结构4第 4 章 实现部分54.1 核心代码5第 5 章 程序测试75.1 测试数据75.2 程序运行图85.3 结果分析9第 6 章 总结9参考文献10第 1 章 需求分析我的课程设计题目为学校超市选址问题。对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同,根据以上这两个条件,确定学校的超市要建在什么地方,才能使得方案达到最优。该程序要能够确定超市的最优地址。而这个最有地址只能在所有单位所在地中选择。通过这个课程设计,真

2、正理解弗洛伊德算法的思想,锻炼自主学习能力和程序编写能力,以及能够处理现实生活中类似的问题。第 2 章 总体设计2.1 文字描述首先,建立图的邻接矩阵。输入相关基本数据信息,以单位作为图的顶点,以单位之间的距离与各个单位去超市的频率之积作为图的权值,建立邻接矩阵。然后,调用弗洛伊德算法。单位i与j之间,加入过渡点k,若i、k间距离与k、j间距离之和小于i、j间的距离,修改矩阵。如此反复执行下去。完成后,得到i到j得最短距离。最后,确定最优地点。根据某单位到各个单位的最短距离之和最短,该单位所在地即为最优地址。2.2 程序流程图开始Main()函数输入数据建立图的邻接矩阵Floyd算法i!=j?

3、 N Y输出i-j的最短距离及路径 输出最优地址结束第 3 章 详细设计3.1 数据结构定义一个graph类来存储图的基本信息,代码如下:/qx.h#includeconst int n=4;/4个顶点const int e=6;/8条边#define max 32767class graphpublic:int arcsn+1n+1;/存储带权有向图int an+1n+1;/顶点之间的路径长度int pathn+1n+1;/顶点j的前一顶点的顶点号void floyd(graph &t,const int n);/弗洛伊德算法void add(graph &t);/计算任意顶点到各点的最短距

4、离总和;第 4 章 实现部分4.1 核心代码/qx.cpp#include#includeqx.husing namespace std;/弗洛伊德算法void graph:floyd(graph &t, const int n)for(int i=1;i=n;i+)for(int j=1;j=n;j+)t.aij=t.arcsij;if(i!=j)&(aijmax)t.pathij=i;else t.pathij=0;for(int k=1;k=n;k+) for(int i=1;i=n;i+) for(int j=1;j=n;j+) if(t.aik+t.akjt.aij) t.aij=t

5、.aik+t.akj; t.pathij=t.pathkj; for(int i=1;i=n;i+) for(int j=1;j=n;j+) if(i!=j) couti到j的最短路径为t.aij:; int next=t.pathij; coutj; while(next!=i) coutnext; next=t.pathinext; coutiendl; /计算最短距离之和void graph:add(graph &t)int sumn+1; for(int i=0;in+1;i+)sumi=0;for(int i=1;i=n;i+)for(int j=1;j=n;j+)if(i!=j)s

6、umi=sumi+t.aij;coutendl;couti到各顶点的最短路径总和为sumiendl;sum0=sum1;int address=1;for(int i=2;isumi)sum0=sumi;address=i;cout所以最短路径总和为sum0 学院超市的最佳选址为顶点addressendl;/主函数 void main()graph t;int i,j,w; for(i=1;i=n;i+) for(j=1;j=n;j+) if(i=j) t.arcsij=0; else t.arcsij=max; cout *学校超市最佳选址*endlendlendl; cout请输入请输入存

7、在路径的两个单位以及相通两个单位间的距离(用空格隔开); coutendl; for(int k=1;kijw; t.arcsij=w; t.floyd(t,n); t.add(t);system(pause);第 5 章 程序测试5.1 测试数据输入:请输入请输入存在路径的两个单位以及相通两个单位间的距离输出:最短距离及路径、某一顶点到各个顶点的最短路径之和以及最优地址程序设计中设顶点n=4,即4个顶点,e=8即有8条路径。(如下图)1234429523685.2 程序运行图则输入如下:得出结果如下:5.3 结果分析虽然该程序可以求出最优地址,但还有很多地方需要改进。首先,超市只能选在某个单

8、位所在地,而不能选在除单位所在地以外。其次,每次运行,都要输入数据,降低了程序的效率。可以用文件来保存输入的数据,这样不必每次运行再输一遍了。最后,该程序只能确定一个地点。通过比较某单位到其他单位的距离之和,确定最优地址。虽然求出了最小的,但两个相等的话,却只能求出最先出现的。可以另外定义几个变量,来存放相等时的行号。这样,就能够确定多个地址了,而不会漏掉。第 6 章 总结这个程序基本上运行成功,能够对输入的数据进行简单地计算,并确定超市的最优地址。但是,程序功能还不够全面。同时,这次的课程设计,使我感触颇多。我们的学习不应该只局限于课本。掌握了课本上知识是永远不够的。还需要我们懂得自学,最大

9、限度地利用我们身边的资源。我不但学到了知识,更重要的是如何用语言及文字表达自己的想法。虽然在我的程序代码中,有一部分是从书本弗洛伊德算法程序中得来的,但我并没有生搬硬套。我竭力改进代码,力求与原有的相协调,同时有所创新突破。从中,我还意识到自己编程的弱势。通过这次课程设计,也使我认识到:只要有不退缩的精神耐力终能战胜困难。当你独自把错误找出来,把程序调试出来,你就会觉得心情有多么的欢畅。那是一种成就感,胜利的愉悦感。总之,课程设计使我学了不少知识。同时,该程序还有待改善。参考文献1 李根强等编数据结构 (C+版) (第二版)北京:中国水利水电出版社2 郑莉等编C+语言程序设计(第四版)北京:清

10、华大学出版社深入贯彻党的十七届五中全会精神,紧紧抓住卫生事业前所未有的发展机遇,坚持以人为本、执政为民,全面落实科学发展观,不断开拓创新,全面推进医药卫生体制改革与发展,不断提高公共卫生服务能力和基本医疗服务能力,提高广大人民群众的健康水平。of accountability, redress of orders and prohibitions. Strengthening the honesty and self-discipline of leading cadres honesty in politics and education work, enhance leaders ability to resist

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号