大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal练习>>汉诺塔         本站全文搜索: 友情提示:

汉诺塔
http://www.mydrs.org  6/21/2001  大榕树


[问题描述] 有三根塔,第一根塔上从小到大摆有n片铜片,要求把这些铜片摆到第三根塔上.但大铜片不能压在小铜片上面.
输入:[KEYBOARD] 输出:[SCREEN]
3
a->c a->b c->b a->c b->a b->c a->c


[问题分析] 这个问题可以发现一些规律,要把n移动(a->c),即进行以下操作:n-1(a->b);n(a->c);n-1(b->c).形成递归.

program hanoitower;

uses crt;

var n:integer;

procedure hanoi(x:integer;a,b,c:char);
begin
if x=1 then write(' ',a,' -> ',c,' ') else
begin
hanoi(x-1,a,c,b);
write(' ',a,' -> ',c,' ');
hanoi(x-1,b,a,c);
end;
end;

begin
clrscr;
write('Hanoi tower,Please input n:');
readln(n);
hanoi(n,'a','b','c');
readln;
end.

作 者:MQL
来 源:Pascal Zone
共有7275位读者阅读过此文

  • 上篇文章进位制转化
  • 下篇文章信息学竞赛的规则和特点

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8306]
    2. 七类高中生具有保送资格 [5910]
    3. NOI2006获奖选手名单 [4955]
    4. 关于举办NOIP2006模拟赛的通告 [4106]
    5. Turbo Pascal各语句运行速... [3594]
    6. Turbo王者归来新Delphi免费... [3181]
    7. IOI2006我国4名选手全部获得金... [2945]
    8. 关于APIO2007与IOI2007... [2763]
    9. noip倒计时 by 枯叶蝴蝶 [2683]
    10. 朱泽园:思想上的金牌更重要 [2168]
    递归算法及其应用
    汉诺塔
    简单背包问题
    介绍递归
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号