算法比较复杂procedure TForm1.Button1Click(Sender: TObject); const N=2;//数组大小 var srcArray,tempArray:array of Integer; i,k,j,z:Integer; outStr:string; begin SetLength(srcArray,N+1); SetLength(tempArray,N+1); //初始化 for i:=0 to N do begin srcArray[i]:=i; end; //循环 for i:=1 to N+1 do begin for k:=0 to N-(i-1) do begin CopyMemory(@tempArray[0],@srcArray[0],(N+1)*4); for j:=k to k+i-1 do tempArray[j]:=-1;//'A'临时用-1代替 outStr:=''; for z:=0 to N do begin if z>0 then outStr:=outStr+','; if tempArray[z]=-1 then outStr:=outStr+'A' else outStr:=outStr+IntToStr(tempArray[z]); end; Memo1.Lines.Add(outStr); end; end; end;
0,A,2,3....N;
0,1,A,3....N;
............;
0,1,2,3....A;第二步: A,A,2,3....N;
0,A,A,3....N;
0,1,A,A....N;
............;
0,1,2,3...A,A;.....:第N-1步: A,A,A.....A,N;
0,A,A.....A,A;第N步: A,A,A.......A,A;
從0開始,
糾正: 第N-1步改為第N步; 第N步改為第N+1步.
const
N=2;//数组大小
var
srcArray,tempArray:array of Integer;
i,k,j,z:Integer;
outStr:string;
begin
SetLength(srcArray,N+1);
SetLength(tempArray,N+1);
//初始化
for i:=0 to N do
begin
srcArray[i]:=i;
end;
//循环
for i:=1 to N+1 do
begin
for k:=0 to N-(i-1) do
begin
CopyMemory(@tempArray[0],@srcArray[0],(N+1)*4);
for j:=k to k+i-1 do
tempArray[j]:=-1;//'A'临时用-1代替
outStr:='';
for z:=0 to N do
begin
if z>0 then outStr:=outStr+',';
if tempArray[z]=-1 then
outStr:=outStr+'A'
else
outStr:=outStr+IntToStr(tempArray[z]);
end;
Memo1.Lines.Add(outStr);
end;
end;
end;