请教算法高手!问题解决我给500分!(200分)

  • 主题发起人 主题发起人 cgh1970
  • 开始时间 开始时间
to skadon
就是在1~33个数中随机选出任意个数(比如我取16个),在这16个数中做任意6个数的数组(不重复的)排列该怎样做呢?比如:
01 02 05 06 09 13 18 19 20 21 23 27 29 30 32 33 在这16个数中做6个数一组的不重复的排列如:01 02 05 06 09
01 02 05 06 13
01 02 05 06 18
。。。。

 
如果是生成暴力破解字典,比这个还复杂,55
 
var
i,i1,i2,i3,i4,i5,i6 :integer;
D:DWORD;
s:string;
sa:array[1..33]of string;
Ts : TStringList;
M:integer;
begin
i:=0;
D:=GetTickCount;
M:=16;
sa[1..M] = ** 把已经取出的16个数存到数组
Ts := TStringList.Create ;
for i1:=1 to M-5 do begin
for i2:=i1+1 to M-4 do begin
for i3:=i2+1 to M-3 do begin
for i4:=i3+1 to M-2 do begin
for i5:=i4+1 to M-1 do begin
for i6:=i5+1 to M do begin
i:=i + 1;
Ts.Add(sa[i1] + sa[i2] + sa[i3] + sa[i4] + sa[i5] + sa[i6])

end;
end;
end;
end;
end;
end;
Memo1.Lines.Add(Inttostr(GetTickCount-D))

Ts.SaveToFile('HM.txt');
Ts.Free;
Memo1.Lines.Add(Inttostr(GetTickCount-D))


 
to skadon
谢谢你!我的问题解决了!晚上给分!
 
多人接受答案了。
 
后退
顶部