以前做过一个类似的:var a:array[0..10]of integer;procedure TForm1.comb(m:integer;k:integer); var i,j:integer; s:string; begin for i:=m downto k do begin a[k]:=i; if (k>1) then comb(i-1,k-1) else for j:=a[0] downto 1 do s:=s+format('%2.2d',[a[j]])+' '; if s<>'' then Memo1.Lines.Add(s); s:=''; end; end;procedure TForm1.Button1Click(Sender: TObject); var n:integer; begin n:=3; //取n=3 a[0]:=n; comb(10,3); end;
因为是组合,所以可以: for i:=1 to 8 do for j:=i+1 to 9 do for k:=j+1 to 10 do 三重循环可以搞定!
var i,j:integer;
s:string;
begin
for i:=m downto k do
begin
a[k]:=i;
if (k>1) then
comb(i-1,k-1)
else
for j:=a[0] downto 1 do s:=s+format('%2.2d',[a[j]])+' ';
if s<>'' then
Memo1.Lines.Add(s);
s:='';
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var n:integer;
begin
n:=3; //取n=3
a[0]:=n;
comb(10,3);
end;
for i:=1 to 8 do
for j:=i+1 to 9 do
for k:=j+1 to 10 do
三重循环可以搞定!
共有C = 120 种组合
10procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k, m: integer;
s: string;
begin
for i := 1 to 8 do
begin
for j := i + 1 to 9 do
begin
for k := j + 1 to 10 do
begin
s := '';
for m := 1 to j - 1 do
s := s + IntToStr(m) + ',';
s[Length(s)] := ';';
s := s + ' ';
for m := j to k - 1 do
s := s + IntToStr(m) + ',';
s[Length(s)] := ';';
s := s + ' ';
for m := k to 10 do
s := s + IntToStr(m) + ',';
s[Length(s)] := ';';
self.ListBox1.Items.Add(s);
end;
end;
end;
end;结果:
1; 2; 3,4,5,6,7,8,9,10;
1; 2,3; 4,5,6,7,8,9,10;
1; 2,3,4; 5,6,7,8,9,10;
1; 2,3,4,5; 6,7,8,9,10;
1; 2,3,4,5,6; 7,8,9,10;
1; 2,3,4,5,6,7; 8,9,10;
1; 2,3,4,5,6,7,8; 9,10;
1; 2,3,4,5,6,7,8,9; 10;
1,2; 3; 4,5,6,7,8,9,10;
1,2; 3,4; 5,6,7,8,9,10;
1,2; 3,4,5; 6,7,8,9,10;
1,2; 3,4,5,6; 7,8,9,10;
1,2; 3,4,5,6,7; 8,9,10;
1,2; 3,4,5,6,7,8; 9,10;
1,2; 3,4,5,6,7,8,9; 10;
1,2,3; 4; 5,6,7,8,9,10;
1,2,3; 4,5; 6,7,8,9,10;
1,2,3; 4,5,6; 7,8,9,10;
1,2,3; 4,5,6,7; 8,9,10;
1,2,3; 4,5,6,7,8; 9,10;
1,2,3; 4,5,6,7,8,9; 10;
1,2,3,4; 5; 6,7,8,9,10;
1,2,3,4; 5,6; 7,8,9,10;
1,2,3,4; 5,6,7; 8,9,10;
1,2,3,4; 5,6,7,8; 9,10;
1,2,3,4; 5,6,7,8,9; 10;
1,2,3,4,5; 6; 7,8,9,10;
1,2,3,4,5; 6,7; 8,9,10;
1,2,3,4,5; 6,7,8; 9,10;
1,2,3,4,5; 6,7,8,9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2; 3; 4,5,6,7,8,9,10;
1,2; 3,4; 5,6,7,8,9,10;
1,2; 3,4,5; 6,7,8,9,10;
1,2; 3,4,5,6; 7,8,9,10;
1,2; 3,4,5,6,7; 8,9,10;
1,2; 3,4,5,6,7,8; 9,10;
1,2; 3,4,5,6,7,8,9; 10;
1,2,3; 4; 5,6,7,8,9,10;
1,2,3; 4,5; 6,7,8,9,10;
1,2,3; 4,5,6; 7,8,9,10;
1,2,3; 4,5,6,7; 8,9,10;
1,2,3; 4,5,6,7,8; 9,10;
1,2,3; 4,5,6,7,8,9; 10;
1,2,3,4; 5; 6,7,8,9,10;
1,2,3,4; 5,6; 7,8,9,10;
1,2,3,4; 5,6,7; 8,9,10;
1,2,3,4; 5,6,7,8; 9,10;
1,2,3,4; 5,6,7,8,9; 10;
1,2,3,4,5; 6; 7,8,9,10;
1,2,3,4,5; 6,7; 8,9,10;
1,2,3,4,5; 6,7,8; 9,10;
1,2,3,4,5; 6,7,8,9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3; 4; 5,6,7,8,9,10;
1,2,3; 4,5; 6,7,8,9,10;
1,2,3; 4,5,6; 7,8,9,10;
1,2,3; 4,5,6,7; 8,9,10;
1,2,3; 4,5,6,7,8; 9,10;
1,2,3; 4,5,6,7,8,9; 10;
1,2,3,4; 5; 6,7,8,9,10;
1,2,3,4; 5,6; 7,8,9,10;
1,2,3,4; 5,6,7; 8,9,10;
1,2,3,4; 5,6,7,8; 9,10;
1,2,3,4; 5,6,7,8,9; 10;
1,2,3,4,5; 6; 7,8,9,10;
1,2,3,4,5; 6,7; 8,9,10;
1,2,3,4,5; 6,7,8; 9,10;
1,2,3,4,5; 6,7,8,9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3,4; 5; 6,7,8,9,10;
1,2,3,4; 5,6; 7,8,9,10;
1,2,3,4; 5,6,7; 8,9,10;
1,2,3,4; 5,6,7,8; 9,10;
1,2,3,4; 5,6,7,8,9; 10;
1,2,3,4,5; 6; 7,8,9,10;
1,2,3,4,5; 6,7; 8,9,10;
1,2,3,4,5; 6,7,8; 9,10;
1,2,3,4,5; 6,7,8,9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3,4,5; 6; 7,8,9,10;
1,2,3,4,5; 6,7; 8,9,10;
1,2,3,4,5; 6,7,8; 9,10;
1,2,3,4,5; 6,7,8,9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3,4,5,6; 7; 8,9,10;
1,2,3,4,5,6; 7,8; 9,10;
1,2,3,4,5,6; 7,8,9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3,4,5,6,7; 8; 9,10;
1,2,3,4,5,6,7; 8,9; 10;
1,2,3,4,5,6,7,8; 9; 10;
1,2,3,4,5,6,7,8; 9; 10;