网站大量收购独家精品文档,联系QQ:2885784924

[工学]各类算法精选2.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]各类算法精选2

移盘子问题从左向右依次安放 3 根细柱 A,B,C. 在 A 上套有 N (N≤20) 个直径相同的圆盘, 从下到上依次编为1,2,,,,,N, 将这些圆盘经过 B 单向地移入 C (即不允许从右向左移动). 圆盘可在 B 中暂存. 从键盘输入 N, 问将圆盘全部移入C后,在C柱上共有多少种排列方式? ? ? ?? ?? ?? ?? ?┃ ? ?? ┃ ? ?? ┃ ? ?? ? ? ? ?? ?? ?1 ? ━╋━ ? ?┃ ? ?? ┃ ? ?? ? ? ? ?? ?? ?2 ? ━╋━ ? ?┃ ? ?? ┃ ? ?? ?? ?? ? ? ? ?? ?? ?3 ? ━╋━ ? ?┃ ? ?? ┃ ? ?? ?? ? ? ? ?? ?? ?4 ? ━╋━ ? ?┃ ? ?? ┃ ? ?? ?? ?? ?? ? ? ?? ?? ?? ━━┻━━━┻━━━┻━ ? ? ? ? ?? ?? ?? ?? ? A ? ?? ?B ? ?? ?C ? ?? ? program lxw007; ? type row=array[1..100] of shortint; ? var b,c,d: row; ? ? ? i,j,j1,j2,m,n,n2: integer; ? ? ? s,sum,t,pa,pb,pc:integer; procedure prt2(u:shortint); begin ? if u=1 then ? ? begin ? ? ? inc(pa); inc(pb); b[pb]:=pa; ? ? ? write(A(,pa:2,)=B(,pb:2,) ?); ? ? end ? else ? ? begin ? ? ? inc(pc); c[pc]:=b[pb]; ? ? ? write(B(,pb:2,)=C(,pc:2,) ?); ? ? ? dec(pb); ? ? end end; procedure perm(n:integer; var p:row; var i:integer); var j,j1,j2,t,m:integer; begin ? i:=n; ? repeat ?dec(i) ?until (p[i]p[i+1]) or (i1); ? if i0 then ? ? begin ? ? ? j:=i+1; ? ? ? for t:=i+1 to n do ? ? ? if p[i]p[t] then j:=t; ? ? ? m:=p[i]; p[i]:=p[j]; p[j]:=m; ? ? ? t:=(n-i) div 2; ? ? ? for j:=1 to t do ? ? ?? ?begin ? ? ?? ?? j1:=i+j; j2:=n-j+1; ? ? ?? ?? m:=p[j1]; p[j1]:=p[j2]; p[j2]:=m; ? ? ?? ?end; ? ? end; end; procedure process; begin ? m:=0; j:=0; ? repeat inc(j); m:=m+d[j]; until (m0) or (j=n2); ? if m=0 then ? ? begin ? ? ? inc(sum); s:=0; ? ? ? pa:=0; pb:=0; pc:=0; ? ? ? writeln(No.,sum:5); ? ? ? for j:=1 to n2 do ? ? ?? ?begin ? ? ?? ?? inc(s); prt2(d[j]); ? ? ?? ?? if (s mod 5)=0 then writeln; ? ? ?? ?end; ? ? writeln; ? ? ? for j:=1 to n do write(c[j]:2, ); ? ? ? writeln; ? ? end; end; ? begin {main} ? writeln(输入圆盘数 N:(=50)); readln(n); ? n2:=n*2; ?sum:=0; ? for i:=1 to n do ?begin d[i]:=-1; d[n+i]:=1 end; ? i:=1; ? while i0 do ? ? begin ? ? ? perm(n2,d,i); ? ? ? if i0 then process; ? ? end; ? writeln(排列总数:,sum:6, ? ?圆盘数:,n:2); end. 菲波拉契数列【问题描述】著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。 ?【分析】按菲波拉契数列的原则,数列为:0 1 1 2 3 5

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档