集装箱的积载图的行号表示方法 一行有N个格子,N是奇数,则在中间的一个标识 00。 00坐边的是奇数,右边的是偶数
例如 03 01 00 02 04 每个数字下面都有个格子(格子这里画不出)
如果N是偶数 则 直接就是 03 01 02 04请教各位了 搞定后立马结分付:DELPHI 这么优秀的工具居然倒在BORLAND 手里 无语中
例如 03 01 00 02 04 每个数字下面都有个格子(格子这里画不出)
如果N是偶数 则 直接就是 03 01 02 04请教各位了 搞定后立马结分付:DELPHI 这么优秀的工具居然倒在BORLAND 手里 无语中
var
Idx : integer;
begin
for Idx := Pred(Source.Count) downto 0 do
Dest.Add(Source[Idx]) ;
end;procedure MergeEvenStrings(Dest, Source: TStrings) ;
var
Idx : integer;
begin
for Idx := 0 to Pred(Source.Count) do
Dest.Add(Source[Idx]) ;
end;procedure TForm1.Button3Click(Sender: TObject);
const
Num = 33;
var
str: TStrings;
strOdd: TStrings;
strEven: TStrings;
Idx: Integer;
begin
str := TStringList.Create;
strOdd := TStringList.Create;
strEven := TStringList.Create;
for Idx := 1 to Num do
begin
if Idx mod 2 = 0 then
strEven.Add(Format('%.2d',[Idx]))
else
strOdd.Add(Format('%.2d',[Idx]));
end;
MergeOddStrings(str, strOdd);
if Num mod 2 <> 0 then
str.Add(Format('%.2d',[0]));
MergeEvenStrings(str, strEven);
Memo1.Lines := str;
end;Num就是你的每行的数目
1、把一行的数目分成奇数和偶数2个数组(strOdd, strEven),
2、奇数数组按降序、偶数数组按升序合并到总的数组(str)
3、在合并偶数数组之前判断总的数目是否为奇数,
如果是则填加00到总数组的尾部,然后再合并偶数数组。
TArray = array of integer;function Calc(N: integer): TArray;
var
i, m: integer;
S: TArray;
begin
Setlength(S, N + 1);
m := N div 2;
if odd(N) then
S[m + 1] := 0;
for i := 1 to N do
begin
if odd(i) then
S[m - (i - 1) div 2] := i
else
S[m + i div 2 + 1] := i;
end;
Result := S;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
t: TArray;
i : integer;
begin
t := Calc(11); //这里填你的数目
Memo1.Clear;
for i := 1 to length(t) - 1 do
begin
Memo1.Lines.Append(Format('%.2d',[t[i]]));
end;
end;
type
TArray = array of integer;function Calc(N: integer): TArray;
var
i, m: integer;
S: TArray;
begin
Setlength(S, N + 1);
m := N div 2;
if odd(N) then
S[m + 1] := 0;
for i := 1 to N do
begin
if odd(i) then
S[m - (i - 1) div 2] := i
else
if odd(N) then
S[m + i div 2 + 1] := i
else
S[m + i div 2] := i;
end;
Result := S;
end;算法是这样的:
eg: 03 01 00 02 04
一数组t,算出上面数值在数组中的相应位置。
即:
03 => 1 t[1]=03
01 => 2 t[2]=01
00 => 3 t[3]=00
02 => 4 t[4]=02
04 => 5 t[5]=04