📄 cd3_2u.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "cd3_2u.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
String str[100];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::endClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
han(int n,String a,String c,String b)
{
static int i=0; //定义i为静态整数型变量,设定值为0
if(n==1) //结束条件
{
str[i]="圆盘 "+IntToStr(n)+" 从 "+a+" 移到"+c;
i++;
}
else
{
han(n-1,a,b,c);
str[i]="圆盘 "+IntToStr(n)+" 从 "+a+" 移到"+c;
i++;
han(n-1,b,c,a);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::inpClick(TObject *Sender)
{
int n,i,j=1;
String a="A",b="B",c="C"; //设置字串变量内容值
n=StrToInt(InputBox("圆盘输入框","圆盘数量 : ","3"));
for(i=0;i<n;i++) //共移动(2^n)-1次
j=j*2;
lbout->Items->Add("总共搬动了 "+IntToStr(j-1)+" 次"); //输出最佳执行次数
han(n,a,c,b); //调用han函数进行堆栈运算
for(i=0;i<=j;i++)
lbout->Items->Add(str[i]); //输出运算结果,最佳执行步骤
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)//设置鼠标拖动对象的事件函数
{
if(Source==sma) //如果来源等于sma则执行下列语句
{
sma->Left=X; //设定sma左边界为鼠标位置X轴座标
sma->Top=Y; //设定sma上边界为鼠标位置y轴座标
} //窗体原点在左上角(0,0)
if(Source==mid)
{
mid->Left=X;
mid->Top=Y;
}
if(Source==big)
{
big->Left=X;
big->Top=Y;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -