for i:= Low(A) to High(A) do for j:= Low(B) to High(B) do for k:= Low(C) to High(C) do writeln(IntToStr(i*Length(j) * Length(k) + j*Length(k) + k +1) + ',' + A[i] + ',' + B[j] + ',' + C[k]);
噢,搞懂了,谢谢,我还用一个很复杂的方法历遍来实现呢。 for i :=1 to 3 do begin n=n+ a[1,b[i]] ;
if b[i]=high then begin b[i] = 0 ; b[i-1]=b[i-1] +1; end else begin b[i]=b[i]+1 ; end ; 谢谢,顺便问一下,如果有20个城市或者100个城市,可有更简单的方法实现?
用二维数组即可 var A:array of array of string; P:array of integer; b:boolean; i:integer; begin SetLength(P,Length(A)); for i:=0 to High(P) do P[i] := 0; while true do begin for i:=Low(A) to High(A) do write(A[i][P[i]]); b := false; for i:=Low(A) to High(A) do begin if P[i]<High(A[i]) then b := true; end; if not b then break; writeln; i:=High(A); while i>=0 do begin if P[i] <High(A[i]) then begin inc(P[i]); break; end else begin P[i] := 0; dec(i); end; end; end; readln; end.你的三十分真难拿……下次不回答这种算法题目了……-_-
for j:= Low(B) to High(B) do
for k:= Low(C) to High(C) do
writeln(IntToStr(i*Length(j) * Length(k) + j*Length(k) + k +1) + ',' + A[i] + ',' + B[j] + ',' + C[k]);
begin
n=n+ a[1,b[i]] ;
if b[i]=high then
begin
b[i] = 0 ;
b[i-1]=b[i-1] +1;
end
else
begin
b[i]=b[i]+1 ;
end ;
谢谢,顺便问一下,如果有20个城市或者100个城市,可有更简单的方法实现?
var
A:array of array of string;
P:array of integer;
b:boolean;
i:integer;
begin
SetLength(P,Length(A));
for i:=0 to High(P) do
P[i] := 0; while true do
begin
for i:=Low(A) to High(A) do
write(A[i][P[i]]); b := false;
for i:=Low(A) to High(A) do
begin
if P[i]<High(A[i]) then
b := true;
end; if not b then
break;
writeln; i:=High(A);
while i>=0 do
begin
if P[i] <High(A[i]) then
begin
inc(P[i]);
break;
end
else begin
P[i] := 0;
dec(i);
end;
end;
end;
readln;
end.你的三十分真难拿……下次不回答这种算法题目了……-_-