⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 hanoi 算法
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    ListBox1: TListBox;
    BitBtn2: TBitBtn;
    Edit2: TEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ComputeData(Sender: TObject );
    procedure Hanoi(n : integer;X : string;Y :string ;Z : string);
  end;

var
  Form1: TForm1;
  i,j,k : integer ;

implementation

{$R *.dfm}

Procedure TForm1.ComputeData(Sender: TObject );
var l : Integer ;
begin
  for i:=0 to 33 do
  begin
    l := 50 - i;
    for j:= 0 to l do
    begin
      k := 100-i-j;
      if ( 3*i+2*j+k/2 ) = 100 then
        break ;
    end;
  end;
end;

procedure TForm1.Hanoi(n : integer;X : string;Y : string;Z : string );
var str : String;
begin
  if n=1 then ListBox1.AddItem('Move 1 From '+ X +' to '+Z,ListBox1)
  else
  begin
    Hanoi(n-1,X,Z,Y);
    str := 'Move '+inttostr(n)+ ' From '+X+' to '+Z ;
    ListBox1.AddItem(str ,ListBox1) ;
    Hanoi(n-1,Y,X,Z);
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Form1.ComputeData(Sender );
  Edit1.Text := inttostr(i)+' '+inttostr(j)+' '+inttostr(k) ;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var i : Integer ;
    X,Y,Z :string ;
begin
  ListBox1.Clear ;
  i := strtoint(Edit2.Text );
  X := ' A盘 ';
  Y := ' B盘 ';
  Z := ' C盘 ';
  Form1.Hanoi(i,X,Y,Z);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -