Delphi回溯法找出不同位组合-Delphi-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝26
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:118回复:0

  Delphi回溯法找出不同位组合

楼主#
更多 发布于:2016-06-03 23:04

Delphi数组比如,Delphi运用回溯法找出n个自然数中取r个数的不同位组合,指定自然数和数组元素就可以算出分组了,演示作用如图所示:

Delphi数组比如,Delphi运用回溯法找出n个自然数中取r个数的不同位组合的代码如下:

unit Unit1;interfaceuses  Windows, Messages,

SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type

 TForm1 = class(TForm)    Button1: TButton;    Edit1: TEdit;    Label1: TLabel;

   Label2: TLabel;    Edit2: TEdit;    Memo1: TMemo;    procedure comb(m,r :

integer);    procedure Button1Click(Sender: TObject);  private    { Private

declarations }  public    { Public declarations }  end;var  Form1: TForm1;

 a:Array [0..100] of integer;implementation{$R *.dfm}procedure TForm1.comb(m, r:

integer);var  i,j : Integer;  s : string;begin  i:=0;  a:=1;  while true do

 begin    if (a-i)<=(m-r+1) then    begin      if i=(r-1) then      begin

       s:='';        for j:=0 to r-1 do          s := s +IntToStr(a[j])+',';    

   Memo1.Lines.Append(Trim(s));        a:=a+1;        continue;      end;

     i:=i+1;      a:=a[i-1]+1;    end    else    begin      if i=0 then exit;

     i:=i-1;      a:=a+1;    end;  end;end;procedure

TForm1.Button1Click(Sender: TObject);var  m,n:Integer;begin  m :=

StrToInt(Edit1.Text);  n := StrToInt(Edit2.Text);  memo1.Clear;

 comb(m,n);end;end.

优质IT资源分享社区为你提供此文。

本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。

Delphi教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客