(aa,567)(好不好,777)(3日2日,222)(4热4热,5t4t4)(6u6u,ggg)(t4t4,eee)............
有一个不定长度的字符串,有N个括弧,每对括弧里面是2个元素,要求取出8个元素的排列组合,括弧对数大于8的。比如取出 aa*777*3日2日*5t4t4*ggg*eee..............,这样的组合,没对括弧里每次只能取一个元素。
有一个不定长度的字符串,有N个括弧,每对括弧里面是2个元素,要求取出8个元素的排列组合,括弧对数大于8的。比如取出 aa*777*3日2日*5t4t4*ggg*eee..............,这样的组合,没对括弧里每次只能取一个元素。
var
i,j,m,n:Integer;
s,s1,s2,s3:string;
str1,str2:TStrings;
begin
str1:=TStringList.Create;
str1.Clear;
str2:=TStringList.Create;
str2.Clear;
ExtractStrings(['*'],[],PChar(ss),str1);
i:=str1.Count;
if i=0 then
Exit;
for j:=1 to i do
begin
s1:=str1.Strings[j-1];
if ss1='' then
s3:=ss1+s1
else
s3:=ss1+'*'+s1;
str2.Clear;
ExtractStrings(['*'],[],PChar(s3),str2);
if str2.Count=count then
begin
str.Add(s3);
Continue;
end;
s2:='';
for n:=j to i-1 do
s2:=s2+str1.Strings[n]+'*';
Self.getn(s2,s3,count,str);
end; str1.Free;
str2.Free;
end;
...
var
A1:array[1..5,1..4] of Integer=
(
(1, 2, 3, 4),
(1, 2, 3, 5),
(1, 2, 4, 5),
(1, 3, 4, 5),
(2, 3, 4, 5)
);
A2:array[1..5,1..2] of string=
(
('aa','567'),('好不好','777'),('3日2日','222'),('4热4热','5t4t4'),('6u6u','ggg')
);
A3:array[1..16,1..4] of Integer=
(
(1,3,5,7),(1,3,5,8),(1,3,6,7),(1,3,6,8),(1,4,5,7),(1,4,5,8),(1,4,6,7),(1,4,6,8),
(2,3,5,7),(2,3,5,8),(2,3,6,7),(2,3,6,8),(2,4,5,7),(2,4,5,8),(2,4,6,7),(2,4,6,8)
);
A4:array[1..8] of string;procedure TForm1.Button2Click(Sender: TObject);
var
i,k,m:Integer; procedure OutM;
var
i,j:Integer;
s:string;
begin
for i:=1 to 16 do
begin
s:='';
for j:=1 to 4 do
begin
if s<>'' then s:=s+'*';
s:=s+(A4[A3[i][j]]);
end; Memo1.Lines.Add(s);
end;
end;begin
Memo1.Clear; for i:=Low(A1) to High(A1) do
begin
FillChar(A4,8*sizeof(Integer),0); for m:=1 to 4 do
begin
k:=A1[i][m];
A4[m*2-1]:=A2[k,1];
A4[m*2]:=A2[k,2];
end; OutM;
end;
end;
eee*ggg*5t4t4*3日2日*777*aa 这样的得不得输出?
for i := 0 to 255 do
for j := 0 to 7 do
begin
判断i的第j位,是0就输出第j对括弧里面的第一个元素,1则输出第二个,反之也可以
end;