for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do begin m:=i*100+j*10+k; memo1.lines.add(inttostr(m)); end;
根据上述要求,可以进行代码优化 procedure TForm1.Button2Click(Sender: TObject); var i,j:Integer; v :Integer; begin for i:=1 to 3 do begin for j:=1 to 3 do begin v := i*100+j*10; memo1.Lines.Add(IntToStr(v+1)) ; memo1.Lines.Add(IntToStr(v+2)); memo1.Lines.Add(IntToStr(v+3)); end; end; end;
视这3个不同的数字为某三进制系统下的数字,则该问题可以变成从0~ 3^3 -1范围内数字的3进制解码过程,这样在具备decode解码过程的情况下,主程序只需要1次循环即可。//value:传入的数字, //minLen: 解码后最短的长度,若不足该长度则前补elementSet[0]。 //elementSet:解码空间,在这里是数组[1,2,3] function decode(value: Integer;minLen: Integer; elementSet: array of Integer): String; var i,j: Integer; n: Integer; //码制 begin Result:= ""; n:= Length(elementSet); While value<>0 do begin j:= value mod n; Result:= IntToStr(elementSet[j])+Result; value:= value div n; end ; while Length(Result)<minLen do Result:= IntToStr(elementSet[j])+Result; end ;//然后是主程序: procedure main() var i: Integer; elementSet: Array of Integer; minLen: Integer; //返回的数字长度 begin setLength(elementSet,3); elementSet[0]:=1; elementSet[1]:=2; elementSet[2]:=3; minLen:= 3; for i:= 0 to power(Length(elementSet),minLen)-1 do showMessage(decode(i,minLen,elementSet)); end ;
main()
{
int a[3]={1,2,3};
int i1,i2,i3;
for(i1=0;i1<3;i1++)
{
for(i2=0;i2<3;i2++)
{
for(i3=0;i3<3;i3++)
if( (a[i1]==3) && (a[i2]==3) && (a[i3]==3) )
printf("%d%d%d.",a[i1],a[i2],a[i3]);
else
printf("%d%d%d,",a[i1],a[i2],a[i3]);
}
}
}
呵呵,帮你吧最后一个333后的原点也写上了。嘻嘻。c语言的,希望你会喜欢呵呵。
for j:=1 to 3 do
for k:=1 to 3 do
begin
m:=i*100+j*10+k;
memo1.lines.add(inttostr(m));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:Integer;
v :Integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
v := i*100+j*10;
memo1.Lines.Add(IntToStr(v+1)) ;
memo1.Lines.Add(IntToStr(v+2));
memo1.Lines.Add(IntToStr(v+3));
end;
end;
end;
//minLen: 解码后最短的长度,若不足该长度则前补elementSet[0]。
//elementSet:解码空间,在这里是数组[1,2,3]
function decode(value: Integer;minLen: Integer; elementSet: array of Integer): String;
var
i,j: Integer;
n: Integer; //码制
begin
Result:= "";
n:= Length(elementSet);
While value<>0 do
begin
j:= value mod n;
Result:= IntToStr(elementSet[j])+Result;
value:= value div n;
end ;
while Length(Result)<minLen do
Result:= IntToStr(elementSet[j])+Result;
end ;//然后是主程序:
procedure main()
var
i: Integer;
elementSet: Array of Integer;
minLen: Integer; //返回的数字长度
begin
setLength(elementSet,3);
elementSet[0]:=1;
elementSet[1]:=2;
elementSet[2]:=3;
minLen:= 3;
for i:= 0 to power(Length(elementSet),minLen)-1 do
showMessage(decode(i,minLen,elementSet));
end ;