java经典算法_计算机软件及应用_IT计算机_专业资料

java经典算法_计算机软件及应用_IT计算机_专业资料

ID:41518939

大小:124.57 KB

页数:156页

时间:2019-08-26

java经典算法_计算机软件及应用_IT计算机_专业资料_第1页
java经典算法_计算机软件及应用_IT计算机_专业资料_第2页
java经典算法_计算机软件及应用_IT计算机_专业资料_第3页
java经典算法_计算机软件及应用_IT计算机_专业资料_第4页
java经典算法_计算机软件及应用_IT计算机_专业资料_第5页
资源描述:

《java经典算法_计算机软件及应用_IT计算机_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、说明河内之塔(TowersofHanoi)是法国人M.CIaus(Lucas)T1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明i

2、j;1883年法国数学家EdouardLucas曾提及这个故事,据说创世纪时Benares冇一朋波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个山上至下依山小至大排列的金盘(Disc),并命令僧侶将所有的金盘从第一根右棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日

3、来临之时。解法如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。如果盘数超过2个,将第三个以下的盘子遮起來,就很简单了,每次处理两个盘了,也就是:A・>B、A・>C、B->C这三个步骤,而被遮住的部份,•其实就是进入程式的递回处理。事实上,若有n个盘子,则移动完毕所需之次数为2八n・1,所以当盘数为64时,则64如果对这数字没什幺概念,就假设每秒钟搬一个盘子好了,也要约5850亿年左右。#includevoidhanoi(intn,charA,char

4、B,charC){if(n==1){prin廿("Movesheet%dfrom%cto%c",n,A,C);}else{hanoi(n-1,A,C,B);printf("Movesheet%dfrom%cto%crT,n,A,C);hanoi(n-1,B,A,C);}}intmain()intn;printf(”请输入盘数:”);scanf(”%d”,&n);hanoi(n,'A*,'B'C');return0;}所需次数为:2-1=18446744073709551615为5.05390248594782e+

5、16年,也就是约5000吐纪2.AlgorithmGossip:费式数列说明Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:I■若有一只免了每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个丿J后有五只免子(小免子投入生产)……。如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称Z为费氏数列,例如以下:1.1、2、3、5、8、13、21

6、.34、55、89解法依说明,我们可以将费氏数列定义为以下:fn=fn-14-fn-2fn=nifn>1ifn=0,1#include#include#defineN20intmain(void){intFib[N]={0};inti;Fib[O]=0;Fib[1]=1;Fib[i]=Fib[i-1]+Fib[i-2];for(i=0;ivN;i++)printf(”%d”,Fib[i]);printf(,,H);return0;}2.巴斯卡三和形#include

7、>#defineN12longcombi(intn,intr){inti;longp=1;for(i=1;i<=r;i++)p=p*(n-i+1)/i;returnp;}voidpaint(){intn,r,t;for(n=0;n<=N;n++){for(r=0;r<=n;r++){inti;/*排版设定开始*/if(r==0){for(i=0;i<=(N-n);i++)}else{printf(H“);printf(H”);}/*排版设定结束*/printf("%3d",combi(n,r));}printf(””

8、);}}2.AlgorithmGossip:三色棋说明三色旗的问题最早由E.W.Dijkstra所提出,他所使用的川语为DutchNationFlag(Dijkstra为荷兰人),而多数的作者则使用Three-ColorFlag来称Z。假设冇一条绳子,上面冇红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没冇顺序,您希望将Z分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳了上进行这个动作,而且一次只能调换两个旗子。解法在--条绳子上移动,在程式中也就意味只能使用一个阵列,而不使用英它的阵列来作辅助,

9、问题的解法很简单,您可以H己想像一下在移动旗子,从绳子开头进行,遇到蓝色往前移,遇到白色留在中间,遇到红色往后移,如下所示:只是要让移动次数域少的话,就要有些技巧:如果图中w所在的位置为口色,则W+1,农示未处理的部份移至至口色群组。如果W部份为蓝色,则B与W的元素对调,而B与W必须各+1,表示两个群组都多了一•个元

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。