有n個數(n是不固定的,可變的)a[1],a[2]....a[n],對應的取值范圍是0~v[n], 整數,求一段演算法,列出這n個數的所有可能組合
uj5u.com熱心網友回復:
...
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
procedure dfs(step:Integer);
public
{ Public declarations }
end;
var
Form1: TForm1;
data,a,b:array of integer;
m:integer;
n:Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:Integer;
begin
//edit1.Text:='1,2,3,4,5,6,7';
Memo1.Lines.BeginUpdate;
Memo1.Clear;
Memo1.Lines.Delimiter:=',';
Memo1.Lines.DelimitedText:=edit1.Text;
m:=Memo1.Lines.Count;
SetLength(data,m+1);
SetLength(a,m+1);
Setlength(b,m+1);
for i:=0 to memo1.Lines.Count-1 do
data[i+1]:=StrToInt(Memo1.Lines[i]);
memo1.Clear;
for i:=m downto 1 do
begin
for j:=0 to i do
begin
a[j]:=0;
b[j]:=0;
end;
n:=i;
dfs(1);
end;
Memo1.Lines.EndUpdate;
SetLength(data,0);
SetLength(a,0);
SetLength(b,0);
end;
procedure TForm1.dfs(step: Integer);
var
i:integer;
s:string;
begin
if step>n then
begin
s:='';
for i:= 1 to n do
s:=s+' '+inttostr(a[i]);
memo1.Lines.Add(s);
exit;
end;
for i:=1 to m do
if b[i]=0 then
begin
a[step]:=data[i];
if a[step-1]>a[step] then Continue;
b[i]:=1;
dfs(step+1);
b[i]:=0;
end;
end;
...
uj5u.com熱心網友回復:
是求C(n, 1)、C(n, 2) ... C(n, n) ?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24140.html
標籤:語言基礎/算法/系統設計
上一篇:如何代碼實作算出結果
