一个组合算法的问题,困扰我多时了,请各位帮忙(200分)

  • 主题发起人 主题发起人 阿来
  • 开始时间 开始时间

阿来

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个组合算法的问题,我在一个vector中存入多个字符,如[a,b,c,d,e],
希望能得到这些字符的所有组合方式,如:ab,ac,ad,ae,bc,bd,be,cd,cd,de,abc,abd,
abe,bcd,bce,cde,abcd,abce,bcde.新生成的字符串内部的顺序不计较,如有了ab ,就不必
再生成ba,请问有何好的算法?
请各位高手赐教。
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
functiondo
It(const s: string): TStringList;
var
Len: Integer;
Stack: array [1..1000] of Integer;
Top: Integer;
ss: string;
i, j: Integer;
c: Char;
begin
Result:=TStringList.Create;
Len:=Length(s);
if Len>0 then
begin
Top:=1;
Stack[1]:=0;
while Top>0do
begin
while Stack[Top]<Lendo
begin
Inc(Stack[Top]);
ss:='';
for i:=1 to Topdo
ss:=ss+s[Stack];
Result.Append(ss);
Inc(Top);
Stack[Top]:=Stack[Top-1]
end;
Dec(Top)
end;

for i:=0 to Result.Count-2do
for j:=i+1 to Result.Count-1do
if Result>Result[j] then
begin
ss:=Result;
Result:=Result[j];
Result[j]:=ss
end
end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Assign(DoIt('abcde'));
end;

end.
 
请问有java源码的吗,我对delphi不熟。谢谢。
 
呵呵,忘了看分类.
 
后退
顶部