一共是6位数 000000 。
第一位有:5,7,3
第二位有:14,13,12,12
三位:23,24,23
四位:35,32,31,32,33
五位:43,44,45,42
六位:53,54,51,52
这样固定的数字,怎么编程实现所有数的组合?
如:5 14 23 35 43 53 和 5 14 23 35 42 54这种。
要求列举出所有不同组合,但每位上的数是规定好的。最好是DELPHI代码,谢谢
满意再送200分,急~!
比如:
一共是6位数 000000 。
第一位有:5,7,3
第二位有:14,13,12,12
三位:23,24,23
四位:35,32,31,32,33
五位:43,44,45,42
六位:53,54,51,52
这样固定的数字,怎么编程实现所有数的组合?
如:5 14 23 35 43 53 和 5 14 23 35 42 54这种。
要求列举出所有不同组合,但每位上的数是规定好的。最好是DELPHI代码,谢谢
满意再送200分,急~!
比如:
看似复杂,本质上就是按次序进行枚举输出;因为同一位上相同的数字形成的组合必定与以前的重复,所以直接去掉它。在delphi7新建一个窗体,放上一个Button1和Label1,在Button1上双击,放入一下代码即可实现功能。注意:机器如果配置不高,可能需要花费十几秒钟枚举所有组合!
procedure TForm1.Button1Click(Sender: TObject);
var
a:Array [0..2] of integer;
b:Array [0..2] of integer;
c:Array [0..1] of integer;
d:Array [0..3] of integer;
e:Array [0..3] of integer;
f:Array [0..3] of integer;
ai,bi,ci,di,ei,fi:integer;
begin
a[0]:=5;a[1]:=7;a[2]:=3;
b[0]:=14;b[1]:=13;b[2]:=12;
c[0]:=23;c[1]:=24;
d[0]:=35;d[1]:=32;d[2]:=31;d[3]:=33;
e[0]:=43;e[1]:=44;e[2]:=45;e[3]:=42;
f[0]:=53;f[1]:=54;f[2]:=51;f[3]:=52;
for ai:=0 to 2 do
for bi:=0 to 2 do
for ci:=0 to 1 do
for di:=0 to 3 do
for ei:=0 to 3 do
for fi:=0 to 3 do
Label1.Caption:=Label1.Caption+char(vk_return)+IntToStr(a[ai])+' '+IntToStr(b[bi])+' '+IntToStr(c[ci])+' '+IntToStr(d[di])+' '+IntToStr(e[ei])+' '+IntToStr(f[fi]);
next;
next;
next;
next;
next;
next;
end;
不会delphi,不过看到label1.caption=label1.caption+.......,这样会影响速度。最好先用一个简单变量存储,全部循环完成后再把变量赋给label1.caption,速度会明显提升。