最小生成树问题_第1页
最小生成树问题_第2页
最小生成树问题_第3页
最小生成树问题_第4页
最小生成树问题_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE7中北大学数据结构与算法课程设计说明书

学院、系:软件学院专业软件工程学生姓名:xx学号:xxx设计题目:最小生成树问题起迄日期:20年12月9日-20年12月20日指导教师:

20年12月20日需求分析设计内容:给定一个地区的n个城市间的距离网,用prim算法或kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求: (1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价; (2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边); (3)最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。2本设计所采用的数据结构本程序设计所采用的数据结构为图。3设计思想普里姆算法4核心代码intmain()//主函数{mgraphg;vertextypeu;intk;createUDN(&g);/*生成邻接矩阵结构的图*/printf("\nThegraphis:\n");print(g);/*输出邻接矩阵*/printf("inputthecityyouwanttostart:");scanf("%s",u);/*输入最小生成树的起点*/k=locatedvex(g,u);while(k==-1){printf("thenameofthecityiswrong!\n");printf("inputthecityyouwanttostartagain:");scanf("%s",u);k=locatedvex(g,u);}minispantree(g,u);/*普里姆算法求最小生成树*/}4代码#include"stdio.h"#include"string.h"#definemaxnum20/*图的最大顶点数*/#defineINFINITY1000/*定义一个权值的最大值*/typedefcharvertextype[20];/*定义城市名称*/typedefstructarccell{intadj;/*弧的权值*/int*info;/*弧上相关信息的指针*/}arccell;typedefstructarray{vertextypeadjvex;/*顶点的邻接点*/intlowcost;/*某顶点与已构造好的部分生成树的顶点之间的最小权值*/}array;typedefstruct{ vertextypevexs[maxnum];/*顶点向量*/ arccellarcs[maxnum][maxnum];/*邻接矩阵*/ intvexnum,arcnum;/*图的顶点个数和弧个数*/ arrayclosedge[maxnum];/*用普里姆算法求最小生成树时的辅助数组*/}mgraph;voidcreateUDN(mgraph*g){/*用邻接矩阵构造n个城市间的距离网g*/inti,j,m,n,k,a,b,c;vertextypex,y;printf("inputthenumberofcities(atleast6cities):");scanf("%d",&g->vexnum);/*输入城市的个数(图的顶点数)*/printf("inputthenumberofroads(atleast10roads):");scanf("%d",&g->arcnum);/*输入道路的边数(图的边数)*/printf("inputthenameof%dcities:",g->vexnum);for(i=0;i<g->vexnum;i++)scanf("%s",g->vexs[i]);/*输入城市名称(图的顶点)*/for(m=0;m<g->vexnum;m++){for(n=0;n<g->vexnum;n++)g->arcs[m][n].adj=INFINITY;}/*初始化邻接矩阵*/for(k=0;k<g->arcnum;k++){printf("inputthedistanceofaroad:");scanf("%s%s%d",x,y,&c);/*输入城市间的距离(图中边的起点和终点及权值)*/a=locatedvex(*g,x);b=locatedvex(*g,y);while(a==-1||b==-1){printf("thenameofthecityiswrong!\n");printf("inputthedistanceofaroadagain:");scanf("%s%s%d",x,y,&c);a=locatedvex(*g,x);b=locatedvex(*g,y);}g->arcs[a][b].adj=c;g->arcs[b][a]=g->arcs[a][b];}} voidprint(mgraphg)/*输出用邻接矩阵构造的n个城市间距离网g*/{inti,j;for(i=0;i<g.vexnum;i++){for(j=0;j<g.vexnum;j++) printf("%-4d",g.arcs[i][j].adj);printf("\n");}}voidminispantree(mgraphg,vertextypex){/*从第k个顶点出发构造图g的最小生成树*/ inti,j,t,k,sum=0; k=locatedvex(g,x); for(j=0;j<g.vexnum;j++)/*辅助数组初始化*/ if(j!=k){g.closedge[j].lowcost=g.arcs[k][j].adj; strcpy(g.closedge[j].adjvex,x); } g.closedge[k].lowcost=0;/*初始,U={u}*/ for(i=1;i<g.vexnum;i++){/*选择其余的G->vexnum-1个顶点*/ k=min(g);/*求出生成树的下一个顶点*/ printf("(%s,%s)%d\n",g.closedge[k].adjvex,g.vexs[k],g.closedge[k].lowcost);/*输出生成树的边和权值*/ sum+=g.closedge[k].lowcost;/*计算最小生成树的代价*/g.closedge[k].lowcost=0;/*第k顶点并入U集*/for(t=0;t<g.vexnum;t++)/*新顶点并入U后,修改辅助数组*/ if(g.arcs[k][t].adj<g.closedge[t].lowcost){ strcpy(g.closedge[t].adjvex,g.vexs[k]); g.closedge[t].lowcost=g.arcs[k][t].adj; } } printf("Theshortestdistanceis%d\n",sum);/*输出最小生成树的代价*/}intmin(mgraphg){/*在辅助数组g.closedge[i]中选择权值最小的顶点,并返回其位置*/ inti,a=0,min; min=maxnum; for(i=1;i<g.vexnum;i++) if(g.closedge[i].lowcost<min&&g.closedge[i].lowcost!=0){ a=i; min=g.closedge[i].lowcost; }returna; }intlocatedvex(mgraphg,vertextypeu){/*确定任一城市在距离网g中的位置*/ inti; for(i=0;i<g.vexnum;i++)if(strcmp(u,g.vexs[i])==0)returni;return-1;}intmain(){mgraphg;vertextypeu;intk;createUDN(&g);/*生成邻接矩阵结构的图*/printf("\nThegraphis:\n");print(g);/*输出邻接矩阵*/printf("inputthecityyouwanttostart:");scanf("%s",u);/*输入最小生成树的起点*/k=locatedvex(g,u);while(k==-1){printf("thenameofthecityiswrong!\n");printf("inputthecityyouwanttostartagain:");scanf("%s",u);k=locatedvex(g,u);}minispantree(g,u);/*普里姆算法求最小生成树*/}5程序运行结果8心得体会本次课程设计我们经历了最短时间最繁重的设计任务,作为两人组的课程设计任务难度相对来说较大,我和我的合作伙伴尽了最大的努力来做到课程设计的要求,仍然不是很满意最后的结果。但是,总的来说也让我们体会到了一些软件开发的辛苦,有时候你确实需要在有限的时间内来完成任务。最后本次课程任务教给我们很多,让我们客观的正视了自己一个学期的学习成果。我们相信自己通过这样的任务能学到我们平时仅仅上课所学不到的知识,并发现、体会到了一种经过辛苦编程,纠正代码后所独有的快乐。也让我们发现了自己对于编程所潜藏的热爱。

社会实践报告系别:班级:学号:姓名:作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。实践过程:自从走进了大学,就业问题就似乎总是围绕在我们的身边,成了说不完的话题。在现今社会,招聘会上的大字报都总写着“有经验者优先”,可还在校园里面的我们这班学子社会经验又会拥有多少呢?为了拓展自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高自己的能力,以便在以后毕业后能真正真正走入社会,能够适应国内外的经济形势的变化,并且能够在生活和工作中很好地处理各方面的问题,我开始了我这个假期的社会实践-走进天源休闲餐厅。实践,就是把我们在学校所学的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学不实践,那么所学的就等于零。理论应该与实践相结合。另一方面,实践可为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然就不一样了。要学会从实践中学习,从学习中实践。而且在中国的经济飞速发展,又加入了世贸,国内外经济日趋变化,每天都不断有新的东西涌现,在拥有了越来越多的机会的同时,也有了更多的挑战,前天才刚学到的知识可能在今天就已经被淘汰掉了,中国的经济越和外面接轨,对于人才的要求就会越来越高,我们不只要学好学校里所学到的知识,还要不断从生活中,实践中学其他知识,不断地从各方面武装自已,才能在竞争中突出自已,表现自已。在餐厅里,别人一眼就能把我人出是一名正在读书的学生,我问他们为什么,他们总说从我的脸上就能看出来,也许没有经历过社会的人都有我这种不知名遭遇吧!我并没有因为我在他们面前没有经验而退后,我相信我也能做的像他们一样好.我的工作是在那做传菜生,每天9点钟-下午2点再从下午的4点-晚上8:30分上班,虽然时间长了点但,热情而年轻的我并没有丝毫的感到过累,我觉得这是一种激励,明白了人生,感悟了生活,接触了社会,了解了未来.在餐厅里虽然我是以传菜为主,但我不时还要做一些工作以外的事情,有时要做一些清洁的工作,在学校里也许有老师分配说今天做些什么,明天做些什么,但在这里,不一定有人会告诉你这些,你必须自觉地去做,而且要尽自已的努力做到最好,一件工作的效率就会得到别人不同的评价。在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。而这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎样做人,以提高自已的能力!记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是大学高校,学生还终归保持着学生的身份。而走进企业,接触各种各样的客户、同事、上司等等,关系复杂,但我得去面对我从未面对过的一切。记得在我校举行的招聘会上所反映出来的其中一个问题是,学生的实际操作能力与在校理论学习有一定的差距。在这次实践中,这一点我感受很深。在学校,理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。或许工作中运用到的只是很简单的问题,只要套公式似的就能完成一项任务。有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学得这么吃力呢?这是社会与学校脱轨了吗?也许老师是正确的,虽然大学生生活不像踏入社会,但是总算是社会的一个部分,这是不可否认的事实。但是有时也要感谢老师孜孜不倦地教导,有些问题有了有课堂上地认真消化,有平时作业作补充,我比一部人具有更高的起点,有了更多的知识层面去应付各种工作上的问题,作为一名大学生,应该懂得与社会上各方面的人交往,处理社会上所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。毕竟,很快我就不再是一名大学生,而是社会中的一分子,要与社会交流,为社会做贡献。只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格的、对社会有用的人才.很多在学校读书的人都说宁愿出去工作,不愿在校读书;而已在社会的人都宁愿回校读书。我们上学,学习先进的科学知识,为的都是将来走进社会,献出自己的一份力量,我们应该在今天努力掌握专业知识,明天才能更好地为社会服务。实践心得:虽然这次的实践只有短短的几天,而且从事的是比较简单的服务工作,但是通过与各种各样的人接触,还是让我学会了很多道理。首先是明白了守时的重要性。工作和上学是两种完全不同的概念,上学是不迟到很多时候是因为惧怕老师的责怪,而当你走上了工作岗位,这里更多的是由于自己内心的一种责任。这种责任是我学会客服自己的惰性,准时走上自己的岗位。这对我以后的学习生活也是一种鞭策,时刻牢记自己的责任,并努力加强自己的时间观念。其次让我真实的体会到了合作的重要性。虽然我工作的只是小小的一家餐厅,但是从点单到制作到递送到结帐这一环环的工作都是有分工的,只有这样才能使整家店的工作效率都大大的提高。以前虽然在书上看见过很多的团队合作的例子,但这一次是深刻的体会到了,正所谓“众人拾柴火焰高”,“团结就是力量”。在以后的学习和工作中,一定会要牢记这一点,将自己融入到集体中,和大家一起携手走向辉煌。再次,这次打工的经历也让我的心理更加趋于成熟。在餐厅里每天面对形形色色的客人,重复着单调的工作。让从未涉世的我还是有那么一点点不适应的,但是坚持就是胜利。打工毕竟和在家是完全不同的概念,我们学会需要忍耐,需要学会承受,需要学会坚持。将自己这短短的一月的实践同理论相联系,我了解到当代大学生与以往的大学生相比较,求学经历、生活条件、所处社会大环境都相对优越,也没有经过必要的挫折教育,因此,意志往往比较脆弱,克服困难的能力也较差,常常是对社会的要求较高,对自我的要求较低。大学生的责任意识日益成为社会关注的热点问题,责任意识和诚信意识成为不少地方采用人才的两个新标准。大学生参与社会实践是促进大学生素质教育,加强和改进青年学生思想政治工作,引导学生健康成长和成才的重要举措,是学生接触社会、了解社会、服务社会,培养创新精神、实践能力和动手操作能力的重要途径。对于当代大学生来说,应当刻苦学习专业知识,不断提高综合素质和运用知识的技能。从大学生活的开始到走进社会的大圈子中,就只有短短的几年时间,谁不想在将来的社会中能有一席之地呢?所以大家认为大学生必须投身校园内外的各类实践活动,有助于锻炼品质,提高能力。可见其对大学生综合素质的提高有不可抵触的重要性。不能否认有过打工经历的同学,看起来要比其它同学更成熟、社会适应力更强,但对于学生,社会适应力只是一方面的衡量指标,大学期间主要的任务是学业结构的搭建,即知识结构、专业结构的搭建,为了打工影响甚至放弃了专业知识的学习,结果是得不偿失的。实践出真知,社会实践活动是大学生活的重要组成部份,培养当代大学生的历史使命感、社会责任感和积极向上的精神风貌,充分发挥实践育人的作用,提高大学生的综合素质,也是检验所学理论知识的标准,社会实践不但为大学生提供了一个发挥自我才能,展现自我风采的舞台,也是培养和锻炼同学们综合能力的一个阶梯,更是一个大学生进入社会,走上工作岗位前的演练场地。社会实践活动,从而确定比较正确的人生前进方向。河南理工大学计算机科学与技术学院实习报告20—20学年第学期实习名称生产实习实习地点实习日期学生姓名学号专业班级指导教师20**年**月**日一、实习基本情况20**年**月通过网络招聘,我应聘到河南中方纺业有限公司进行实习,该公司位于周口市,主要承担棉纺制造与销售工作,进入公司后我被分配到信息管理部门,主要从事的工作是对公司的网络进行管理与维护,同时对公司网站的管理与维护进行学习,三个月的实习让学会了从不同的角度去看待问题和解决问题,对网络工程师的工作有了全面的认识,为以后的就业积累了经验。二、实习内容1.单位情况河南中方实业(集团)有限公司是以棉花种植、收购、加工、经营、仓储、纺织及棉花与纺织品进出口为产业链条,集研发、生产、经营、投资、管理于一体的现代产业化集团企业。旗下拥有多家从事棉花、纺织等生产、经营的全资、控股子公司。经过多年的发展,公司已形成了以“棉花经营、棉花物流、棉纺织、纺织品出口”为主干业务,以“国内、国际”为两大市场的经营格局。棉花经营涵盖进口棉、新疆棉、地产棉三大系列多个品种;棉花物流业务以地产棉交易为主,填补了河南无地产棉交易市场的空白,并融入了全国棉花物流体系;棉纱产品从精梳40s到精梳120s、气流纺纱16s到21s等两大系列;外贸出口涵盖棉纱、面料、服装等三大系列、400多个品种。公司营销网络覆盖国内众多棉花生产、经营、纺织企业,大型专业公司及国际棉花、纺织工贸公司,并与之建立了长期稳固的互助合作关系,业务范围遍及河南、河北、湖北、新疆、甘肃、浙江、江苏、山东、广东、福建、香港、新加坡、印度、澳大利亚、美国等区域。2.技术培训初到公司后,公司进行了一系列的公司工作相关培训,如企业文化、企业制度等,我所在的信息管理部门也进行了一些技术培训,主要内容有办公软件的使用、公司网络的日常维护工作等,这些培训让我对网络专业有了更进一步的了解,对网络工程师应该干什么有了一个整体的了解。3.工作内容在实习期间我先后主动了解了公司职能范围、机构设置、人员编制等基本情况,并对人事教育、网络管理重点以及现场维护等工作深入学习,先后研读了TCP/IP协议详解一、二卷等书籍,同时我还理论联系实际,实习期间主动要求跟老工程师到现场去实践锻炼、了解学习,努力从多方面开拓自己的眼界。我的主要工作是,在日常工作中通过对老员工的学习,不断的增加自己的实践知识储备,积极参加部门的技能培训,及时总结学习内容,同时对公司需要的文件进行修改、打印以及分发到各个部门。在实习期间,我遇到了很多问题如对设备不熟悉、所学知识不能学以致用等问题,通过自己的沟通协调和监督管理,这些问题都得以解决。三、实习感想从学生到实习工程师,短短几个月的工作过程使我受益匪浅。不仅是在专业知识方面,最主要是在为人处事方面。社会在加速度地发生变化,对人才的要求也越来越高,要用发展的眼光看问题,得不断提高思想认识,完善自己。作为一名it从业者,所受的社会压力将比其他行业更加沉重,要学会创新求变,以适应社会的需要。在单位里,小到计算机的组装维修,大到服务器的维护与测试,都需要一个人独立完成。可以说,近几个月的工作使我成长了不少,从中有不少感悟,下面就是我的一点心得:

第一是要真诚:你可以伪装你的面孔你的心,但绝不可以忽略真诚的力量。第一天去网络中心实习,心里不可避免的有些疑惑:不知道老师怎么样,应该去怎么做啊,要去干些什么呢等等吧!踏进办公室,只见几个陌生的脸孔。我微笑着和他们打招呼。从那天起,我养成了一个习惯,每天早上见到他们都要微笑的说声:“您早啊”,那是我心底真诚的问候。我总觉得,经常有一些细微的东西容易被我们忽略,比如轻轻的一声问候,但它却表达了对同事对朋友的尊重关心,也让他人感觉到被重视与被关心。仅仅几天的时间,我就和领导同事们打成一片,很好的跟他们交流沟通学习,我想,应该是我的真诚,换得了领导和同事的信任。他们把我当朋友也愿意指导我,愿意分配给我任务。

第二是沟通:要想在短暂的实习时间内,尽可能多的学一些东西,这就需要跟领导和同事有很好的沟通,加深彼此的了解,刚到网络中心,老师并不了解你的工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论