范文一:C++两点间距离最短最精板
一、实验内容:
考虑右边的无向图,设计算法输出从顶点a 到顶点i 的一条带权路径长度最短的简单路径。分析时间和空间复杂度。
实验要求:采用递归或非递归的深度优先或广度优先遍历算法扩展实现。
二、算法思想:
构造一个带权无向图,采用深度优先遍历的方法,每走到一个点就用visited[]做访问过的标记,这样循环递归找到顶点a 到i 的所有路径,再比较所有路径的长度,找到最短路径。
三、实验过程:
#include #include #include using namespace std; #define MAX_VEX_NUM 20//最大顶点数 vector vector struct MGraph { char vexs[MAX_VEX_NUM];//顶点向量//AdjMatrix int arcs[MAX_VEX_NUM][MAX_VEX_NUM];//邻接矩阵 int vexnum,arcnum; }; MGraph G;//申明一个无向图的邻接矩阵类型 int Locatevex(MGraph G,char v)//图的基本操作,寻找V 的位置 { int i=0; while(i<> i++; if(i<> return i;//查找成功则返回顶点的下标 else return -1; } int CreateUDG(MGraph&G)//数组邻接矩阵表示法构造无向图 { char v1,v2; int weight;//权值 cout<><> cin>>G.vexnum>>G.arcnum; cout<><> for(int i=0;i cin>>G.vexs[i]; for(int q=0;q for(int p=0;p<> G .arcs[qww][p]=0; for(int k=0;k { cout<><> cin>>v1>>v2>>weight; int a=Locatevex(G,v1); int b=Locatevex(G,v2); G .arcs[a][b]=weight; G .arcs[b][a]=G.arcs[a][b]; for(int n=0;n cout<><<"><"> cout<> cout<> cout<<"该图的邻接矩阵表示为:><"该图的邻接矩阵表示为:> for(int x=0;x=G.vexnum;x++)//输出邻接矩阵 { for(int y=0;y<> cout<><<"><"> cout<> } cout<> cout<> return 1; }//CreateUDG void Minway(MGraph G ,bool*visited,char vexs,int Long,char vb,string path) // { if(vexs==vb) //递归结束条件 path=path+" "+vexs; allPath.push_back(path); //将路径放入向量中 all.push_back(Long); //将路径长放入对应向量中 cout<><><><><> } else { path=path+" "+vexs; int i=Locatevex(G,vexs); visited[i]=true; for(int j=0;j<> if((!visited[j])&&(G.arcs[i][j]!=0)) { Minway(G,visited,G.vexs[j],Long+G.arcs[i][j],vb,path); //递归调用自身 } visited[i]=false; //退出递归前清除访问记录 } } void CountMinway(MGraph G) //该函数调用递归部分实现递归 { char va, vb; string path; //存放路径 cout<> cin>>va>>vb; cout<> int i=Locatevex(G,va); bool visited[100]; for(int j=0;j<> visited[j]=false; //初始化访问记录,全部未访问过 visited[i]=true; //起点顶点设为访问过 int Long=0; path+=va; for(j=0;j<> if(G.arcs[i][j]!=0) { Long=G.arcs[i][j]; Minway (G,visited,G .vexs[j],Long,vb,path); //调用递归部分 } cout<> } void Minway()//输出最短路径 { int min=10000; for(int i=0;i if(all[i]<> min=all[i]; for(int j=0;j if(all[j]==min) cout<<"><"> } void main() { CreateUDG(G);//建图 CountMinway(G);//找出所有路径 Minway(); //输出最短路径 } 四、实验结果: 五、小结: 张公入仕,是士转的仕,张公怪诞脾气,身份转了仕,心思还在士——张公撂下狠话:要我去拍领导马屁,曲着膝盖去跪求首长,除非是水面上称砣浮,直待黄河彻底枯。 这话过狠,狠过了头。水面上称砣没浮呢,按这形势,黄河再过五百年,也难呈现溜青的迹象(枯倒是枯过了)。张公却是要去求人了:他家公子大学毕业,要找工作了,为自己不求人,为儿子还不求人吗?张公子此生立志,非机关不去,这下为难了他老爹,他老爹钩了眉,弯了腰,去找领导,被领导一句话噎了半死:现在不存在顶职,逢进必考。张公尚在世外,不晓得有这个规定。这个规定,确是真的,入了法的。 我对张公说:考可能是要考的,且是很多岗位规定,得有一二年基层工作经历。张公急白:我那兔崽子,毕业后,天天睡了吃,吃了睡,有甚鬼基层工作经历?怕的是,时间久了,基层工作经历没有,只有妓层工作经历。我给张公出了个主意:公可以找关系,将贵公子挂靠机关啊。挂靠这事,我也不闻其详,只是粗知一二:工作关系搁那里,人不上班,工资不领,待国考中举了,既算基层工作经历,还算工龄的呢。 这是一条弯道,张公去走了,没走通。昨人首长办公室,归来哀声泪满襟。我问张公怎么走路的?张公说:我从家里走,直走领导办公室啊。我戳了一下张公额头:这么走,是不行的,张公,你得绕个道:从你家里,走领导家里,然后呢,再走领导办公室。“为人进去的门紧锁着,为狗爬出的洞敞开着”,出洞之路,男人得走犬道,女人得走猫步。 张公还是归来泪满襟。我问张公:弯路走了没?张公说:走了,没走通。我说,那就再走,走诰命夫人吧。张公归来还是泪满襟。我问张公:弯路再走了没?张公说:走了,没走通。我说:那就再走,走编外夫人吧。 张公走通了,更让我惊得从沙发上掉到地板上的是:张公子已调到机关事业单位,正式工作,入了编制,还领工资的呢。原来张公多走几次夜路,首长编外夫人(编外N号)告张公:你挂屌靠啊?正式参加工作嘛,你到其他县里去挂靠一下,不领他县工资,然后,我叫我那死鬼,把你小孩调过来。工作安排不可以,工作调动,没有任何法律说不可以。到邻县挂靠事,张公走了首长编外夫人第×号;这调动事,张公走了首长编外N号夫人。 把夜路走弯,通了嘛。不直撞红灯,不直撞文件,不直撞法律,绕着红灯走,绕着文件走,绕着法律走,哪有走不通的? 直如弦,死道边;曲如钩,反封侯。张家公子,封侯了。 不是我有多天才,先知先觉,晓得这里尽是弯路,我是后知后觉得很。若说有知觉,只是多翻了几册黄灯古卷。弯路这事,要翻古卷吗?也不用翻的,看看电视《水浒传》,可领悟一二了。 高俅这厮,原是破落户,没信行的人,读过什么书?诸位是头悬梁锥刺股,逢进必考,逢考都不进(考得老来七十三,死也没得一青衫的,多);高俅这厮,逢进必不考。翻高俅发迹史档案,哪见他考试过?先是在柳大郎那里帮凶,“若论仁、义、礼、智、信、行、忠、良,却是不会”。这厮踢得一脚好球,转了好几个主人(你可以理解为,仕途没直道,只有弯路),包括做过苏轼家童,后转小王都太尉处,最后转到大宋一把手身边了。 其中九曲十八弯,都不说了。话说的是,高俅这厮到了哲宗皇帝(赵煦)身边,领导爱踢球,高俅球踢得好(有机会,要与领导同一个爱好;没有机会,创造机会,也要与领导同爱好),一把手喜欢上了,要提拔高俅这厮了。兄弟别以为,宋帝国是封建王朝,就可以无法无天,乱搞乱发财,但大宋也是有祖制的,也是有法度的。 我是流氓,我要做高干,这行吗?这行的。从流氓这个点,到高干那位点,直线走,想来最是便捷,但最快吗?高俅走到死,都走不通,哪怕皇帝垂下线来,把他往上吊,也断难吊上去。唐高宗李治要提拔小三武媚(后称武则天),也要转个弯儿,送往道观读大学,先弄个结业证、毕业文凭啥的。 没有规矩,则不成方圆;既是规矩,则有方有圆。哲宗要提拔流氓高俅,“方提”不行,就得“圆提”(工作要做圆些):先将高俅放下去,放到最边远的地方去,放到最艰苦的地方去(边塞呢,打仗的地方呢)。 从机关提到机关,直线;从机关下基层,再提机关,弯道;两点之间,是直线距离最短,还是曲线仕途最短?高俅被一把手空降地方,“先教枢密院与你人名,只是做随驾迁转的人”,基层锻炼去了。锻炼多久?半年;升到多高?司令——“后来没半年之间,直抬举高俅做到殿帅府太尉职事”。从流氓这点位,走法规直道,走到主席台这位点,走八辈子都走不通;从流氓这一点,绕文件,再绕条规法律,走上高官那位点,看起来弯弯绕,却是最近路线,最佳捷径。有女领导说:从床上,到主席台,路线最短。有人有点儿不理解,从机关走机关,直线哒;从机关还要绕张床,再到机关,不绕道了? 绕道,恰是抄近道。 两点之间,直线最短,那是科学;两点之间,曲线最短,那是科场。科场是科学吗?官理是天理吗?仕道是正道吗?一字之差,差之毫厘,谬之千里。 一位成功学教授被邀请到一座高等学府为同学们演讲。面对台下喧闹的同学,这位教授开头的第一句话就是问同学们:“你们有谁知道两点之间最短的距离是什么?”很多同学在听了这样一个问题后很不以为然甚至有点嗤之以鼻,心里想:“这算什么教授,这么简单的问题也说得出口!”一位同学站起来有点不屑一顾地说:“这个问题连小学一年级都知道,两点之间最短的距离不就是直线吗?”教授铿锵有力地说道:“错!两点之间最短的距离有可能是直线,也有可能是曲线!” 同学们一脸的震惊和迷惑,教授接着解释了所谓的距离。到底什么才是真正的距离?距离是路程的远近吗?距离是直线的长短吗?都不是。真正的距离是从起点成功地到达终点所经历的一切,无论受挫还是顺利。从几何学角度来说,两点之间最短的距离确实是直线,但从现实生活中来说,这条直线不一定能够把你从起点成功地带到终点。这样的距离看起来最短,实际上很长,甚至会把有可能的事情变成不可能。 教授一针见血地为我们指出了在现实生活中两点之间最短的距离不一定是直线这样一个真理,可是现实生活中的我们又有多少人为了简单的追求并无效用的直线而弄得自己头破血流,到头来仍然是一事无成呢? 古代有两个商人经过一片沙漠时迷路了。 沙漠浩瀚无边,方圆百里没有任何参照物,除了沙子还是沙子。 他们不知道往哪边走,走了一阵子又走回了原地。到了晚上,两个人都很笨,甚至不知道看北极星,只好在沙漠里冻了一宿。 第二天,两个人的意见发生了分歧。第一个人坚决认为要往西走,第二个人虽然不知道要往哪边走,但不同意第一个人的意见,说来的时候就是这个方向,怎么可能往回走呢? 冲突得不到解决,两个人只好各走各的路。 第一个人为了走出沙漠,认为不管是回去的路还是走到其他什么地方,只要能走出沙漠就好。于是他坚定一个信念,只朝着一个方向走。虽然朝着这一个方向走并不是直线。两天两夜后,他的食物和水已经用完了。正当他绝望之际,他看见了前面不远处的炊烟正袅袅升起,像是欢迎他的到来。就这样,第一个人成功地走出了沙漠。 第二个人认为两点之间最短的距离是直线,只要走直线,不走弯路,就一定会走出沙漠,而且还会比第一个人先走出沙漠。为了走出沙漠,他在原地做了一个记号,然后朝东走。走了不多久,他觉得不对,以为自己走了弯路,又返回原地。接着往南走,不多久又折了回来。接着往北走,走了半天仍然不见一个人影,以为又走错了,还是回到了原地。接下来,他尝试了西南、西北、东南、东北,几乎每一个方向都试过了,他还是回到了原地。这时候,他的食物和水也用完了。几天后,这个人不但没有比第一个人先走出沙漠,而且死在了沙漠里。他死的时候仍然不明白,沙漠里没有直线,只有方向。如果你不转变你的思路,一味地追求所谓的直线,那么等待你的只能是死路一条。 事实上,我们的人生会遇到很多像沙漠这样的迷宫,既然是迷宫,就不要奢望两点之间的直线会拯救你,你就应该静下心来,好好地想一想,我到底该走哪一条路?是走最短的路?还是走最有效的路?捷径又是什么?捷径就是最短的路吗?只有想清楚了,摒除心中根深蒂固的直线情结,不盲目追求最短的距离,选择一条正确的道路,这样你才会成功地到达你的目的地。或许时间是稍微长了一点,但这有什么关系呢?我们的目的不就是要到达目的地吗?难道你想一辈子在原地打转不成?没有人会这样想,你也不会。 玩过电脑游戏的人都知道,很多时候,直线代表着一个陷阱,一个诱惑。在玩游戏的时候,我们常常会遇到迷宫,走出迷宫是我们最大的目的,为此我们绞尽了脑汁,挖空了心思,我们总想走直线,总想走最短的路程,结果往往事与愿违。更让我们百思不得其解的是,出路就在眼皮子底下,但是朝着前方直走就是走不出去,硬是要你转好几个弯才能出来。当你走出迷宫,眼前豁然开朗的时候,你就会想,虽然走了不少弯路,但还是值得的。 我们都知道拔苗助长的故事,一个农夫为了让自己的禾苗快点长高,竟然亲自去田地里一株一株地把禾苗拔高,结果禾苗不但没有长高,反而由于缺乏水分和营养,在太阳的暴晒下枯萎了。农夫的愿望是美好的,我们不能原谅的是他实现愿望的方式,他是一个典型的直线病患者,为了追求最快最短,结果却断了自己的衣食之源。说起这个故事我们常常会嘲笑农夫,然而在嘲笑农夫的同时,我们应该扪心自问一下,自己是否也经常犯这样的错误呢? 所以,从现在起我们必须明白:两点之间最短的距离不一定是直线。我们要的是最有效的距离。做好一件事情,到达一个目的地,有些过程,有些距离是必须的。如果你是一个毕业生,如果你想成为一名优秀的企业家,那么你现在应该做的就是积累,而不是马上去开公司。如果你想成为一个作家,但你只不过初出茅庐,那你就不要老想着自己的思想有多么先进,你首先要做的是得到读者的认可。如果你人微言轻,没有人把你独特的见解放在眼里,那么你可以先不创新,而是去模仿,然后当大家都认可你的时候再创新。 两点之间最短的距离 话题:直线 距离 沙漠 一位成功学教授被邀请到一座高等学府为同学们演讲。面对台下喧闹的同学,这位教授开头的第一句话就是问同学们:“你们有谁知道两点之间最短的距离是什么?”很多同学在听了这样一个问题后很不以为然甚至有点嗤之以鼻,心里想:“这算什么教授,这么简单的问题也说得出口!”一位同学站起来有点不屑一顾地说:“这个问题连小学一年级都知道,两点之间最短的距离不就是直线吗?”教授铿锵有力地说道:“错!两点之间最短的距离有可能是直线,也有可能是曲线!”同学们一脸的震惊和迷惑,教授接着解释了所谓的距离。到底什么才是真正的距离?距离是路程的远近吗?距离是直线的长短吗?都不是。真正的距离是从起点成功地到达终点所经历的一切,无论受挫还是顺利。从几何学角度来说,两点之间最短的距离确实是直线,但从现实生活中来说,这条直线不一定能够把你从起点成功地带到终点。这样的距离看起来最短,实际上很长,甚至会把有可能的事情变成不可能。教授一针见血地 为我们指出了在现实生活中两点之间最短的距离不一定是直线这样一个真理,可是现实生活中的我们又有多少人为了简单的追求并无效用的直线而弄得自己头破血流,到头来仍然是一事无成呢?古代有两个商人经过一片沙漠时迷路了。沙漠浩瀚无边,方圆百里没有任何参照物,除了沙子还是沙子。他们不知道往哪边走,走了一阵子又走回了原地。到了晚上,两个人都很笨,甚至不知道看北极星,只好在沙漠里冻了一宿。第二天,两个人的意见发生了分歧。第一个人坚决认为要往西走,第二个人虽然不知道要往哪边走,但不同意第一个人的意见,说来的时候就是这个方向,怎么可能往回走呢?冲突得不到解决,两个人只好各走各的路。第一个人为了走出沙漠,认为不管是回去的路还是走到其他什么地方,只要能走出沙漠就好。于是他坚定一个信念,只朝着一个方向走。虽然朝着这一个方向走并不是直线。两天两夜后,他的食物和水已经用完了。正当他绝望之际,他看见了前面不远处的炊烟正袅袅升起,像是欢迎他的到来。就这样,第一个人成功地走出了沙漠。第二个人认为两点之间最短的距离是直线,只要走直线,不走弯路,就一定会走出沙漠,而且还会比第一个人先走出沙漠。为了走出沙漠,他在原地做了一个记号,然后朝东走。走了不多久,他觉得不对,以为自己走了弯路,又返回原地。接着往南走,不多久又折了回来。接着往北走,走了半天仍然不见一个人影,以为又走错了,还是回到了原地。接下来,他尝试了西南、 西北、东南、东北,几乎每一个方向都试过了,他还是回到了原地。这时候,他的食物和水也用完了。几天后,这个人不但没有比第一个人先走出沙漠,而且死在了沙漠里。他死的时候仍然不明白,沙漠里没有直线,只有方向。如果你不转变你的思路,一味地追求所谓的直线,那么等待你的只能是死路一条。事实上,我们的人生会遇到很多像沙漠这样的迷宫,既然是迷宫,就不要奢望两点之间的直线会拯救你,你就应该静下心来,好好地想一想,我到底该走哪一条路?是走最短的路?还是走最有效的路?捷径又是什么?捷径就是最短的路吗?只有想清楚了,摒除心中根深蒂固的直线情结,不盲目追求最短的距离,选择一条正确的道路,这样你才会成功地到达你的目的地。或许时间是稍微长了一点,但这有什么关系呢?我们的目的不就是要到达目的地吗?难道你想一辈子在原地打转不成?没有人会这样想,你也不会。玩过电脑游戏的人都知道,很多时候,直线代表着一个陷阱,一个诱惑。在玩游戏的时候,我们常常会遇到迷宫,走出迷宫是我们最大的目的,为此我们绞尽了脑汁,挖空了心思,我们总想走直线,总想走最短的路程,结果往往事与愿违。更让我们百思不得其解的是,出路就在眼皮子底下,但是朝着前方直走就是走不出去,硬是要你转好几个弯才能出来。当你走出迷宫,眼前豁然开朗的时候,你就会想,虽然走了不少弯路,但还是值得的。我们都知道拔苗助长的故事,一个农夫为了让自己的禾苗快点长高,竟然亲自去田地里 一株一株地把禾苗拔高,结果禾苗不但没有长高,反而由于缺乏水分和营养,在太阳的暴晒下枯萎了。农夫的愿望是美好的,我们不能原谅的是他实现愿望的方式,他是一个典型的直线病患者,为了追求最快最短,结果却断了自己的衣食之源。说起这个故事我们常常会嘲笑农夫,然而在嘲笑农夫的同时,我们应该扪心自问一下,自己是否也经常犯这样的错误呢?所以,从现在起我们必须明白:两点之间最短的距离不一定是直线。我们要的是最有效的距离。做好一件事情,到达一个目的地,有些过程,有些距离是必须的。如果你是一个毕业生,如果你想成为一名优秀的企业家,那么你现在应该做的就是积累,而不是马上去开公司。如果你想成为一个作家,但你只不过初出茅庐,那你就不要老想着自己的思想有多么先进,你首先要做的是得到读者的认可。如果你人微言轻,没有人把你独特的见解放在眼里,那么你可以先不创新,而是去模仿,然后当大家都认可你的时候再创新。 模拟实习 课 题 教 案 姓 名: 崔丛艳 学 号: 学 院: 数学科学学院 年级专业:2012级数学与应用数学 指导教师: 赵秀 课题:平面上两点间的距离 【授课地点】 兴义民族师范学院 【授课教师】崔丛艳 【授课内容】 平面上两点间的距离 【教学目标】 1、 2、 知识与技能:①掌握两点间的距离公式。 过程与方法:①通过利用坐标法对两点间距离公式的推导,启发学生运用数形结合思想 方法分析问题。 ②讲解例题、总结方法、练习巩固 ②能灵活运用距离公式解决简单的问题。 3、情态与价值:通过对公式的推导,加深学生对数形结合思想的理解与认识,提升学生解决问 题的思维。 【教学重点】平面内两点间的距离公式的理解与应用。 【教学难点】理解两点间距离公式的推导、运用坐标法去解决实际数学问题。 【授课类型】新授课 【授课方法】讲授式、引导式、师生共同探究式、 转载请注明出处范文大全网 » C++两点间距离最短最精板范文二:两点间曲线最短
范文三:两点之间最短的距离
范文四:两点之间最短的距离
范文五:两点间距离教案