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

📄 cd3_2u.cpp

📁 C++ Builder程序员学习数据结构,里面涵盖了所有你要学习的数据结构的所有源码(二叉树、链表、单链表、双链表、红黑树、快速排序、冒泡排序、哈弗曼树、堆、集合、字典、散列、字典、跳表、图、最短路径
💻 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 + -