В общую длину пути будет входить длина дороги AC = 10
Длина пути напрямую из C в F (CF) = 8.
Нам нужно проверить, если ли смысл ехать в другой нас. пункт из C, чтоб сократить общий путь.
Варианты, где расстояние из C в другой нас. пункт больше или равно CF отбрасываем. У нас остаются:
Теперь проверим, из какого из этих пунктов расстояние в F не превышает расстояние CF - 8.
Подсчитаем общий размер пути, который нужно преодолеть с самого начала и найдем наименьший
Длина кратчайшего пути между пунктами А и F, проходящая через пункт С = 15 (ACEF).
program a;
type
Ta = array of Integer;
procedure Sort (var a: Ta);
var
i, j, jmax, atmp: Integer;
begin
for i := Low (a) to High (a) do begin
jmax := i;
for j := i + 1 to High (a) do begin
if a [j] < a [jmax] then // возрастание и убывание меняется знаком "<" или ">" в этом операторе
jmax := j;
end;
atmp := a [i];
a [i] := a [jmax];
a [jmax] := atmp;
n, i: Integer;
a: Ta;
Write ('Количество элементов: ');
ReadLn (n);
SetLength (a, n);
for i := Low (a) to High (a) do
Read (a [i]);
Sort (a);
Write (a [i], ' ');
ReadLn;
end.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
program b;
procedure InArr (var a: Ta);
i, n: Integer;
n, i, l1, l2: Integer;
a1, a2: Ta;
Write ('Первый массив.');
InArr (a1);
Write ('Второй массив.');
InArr (a2);
l1 := Length (a1);
l2 := Length (a2);
SetLength (a1, l1 + l2);
for i := Low (a2) to High (a2) do
a1 [i + l1] := a2 [i];
Sort (a1);
for i := Low (a1) to High (a1) do
Write (a1 [i], ' ');
В общую длину пути будет входить длина дороги AC = 10
Длина пути напрямую из C в F (CF) = 8.
Нам нужно проверить, если ли смысл ехать в другой нас. пункт из C, чтоб сократить общий путь.
Варианты, где расстояние из C в другой нас. пункт больше или равно CF отбрасываем. У нас остаются:
CB = 6CD = 2CE = 5Теперь проверим, из какого из этих пунктов расстояние в F не превышает расстояние CF - 8.
BF = 1DF = 4EF = 0Подсчитаем общий размер пути, который нужно преодолеть с самого начала и найдем наименьший
ACF = 10 + 8 = 18ACBF = 10 + 6 + 1 = 17ACDF = 10 + 2 + 4 = 16ACEF = 10 + 5 + 0 = 15Длина кратчайшего пути между пунктами А и F, проходящая через пункт С = 15 (ACEF).
program a;
type
Ta = array of Integer;
procedure Sort (var a: Ta);
var
i, j, jmax, atmp: Integer;
begin
for i := Low (a) to High (a) do begin
jmax := i;
for j := i + 1 to High (a) do begin
if a [j] < a [jmax] then // возрастание и убывание меняется знаком "<" или ">" в этом операторе
jmax := j;
end;
atmp := a [i];
a [i] := a [jmax];
a [jmax] := atmp;
end;
end;
var
n, i: Integer;
a: Ta;
begin
Write ('Количество элементов: ');
ReadLn (n);
SetLength (a, n);
for i := Low (a) to High (a) do
Read (a [i]);
Sort (a);
for i := Low (a) to High (a) do
Write (a [i], ' ');
ReadLn;
ReadLn;
end.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
program b;
type
Ta = array of Integer;
procedure Sort (var a: Ta);
var
i, j, jmax, atmp: Integer;
begin
for i := Low (a) to High (a) do begin
jmax := i;
for j := i + 1 to High (a) do begin
if a [j] < a [jmax] then // возрастание и убывание меняется знаком "<" или ">" в этом операторе
jmax := j;
end;
atmp := a [i];
a [i] := a [jmax];
a [jmax] := atmp;
end;
end;
procedure InArr (var a: Ta);
var
i, n: Integer;
begin
Write ('Количество элементов: ');
ReadLn (n);
SetLength (a, n);
for i := Low (a) to High (a) do
Read (a [i]);
end;
var
n, i, l1, l2: Integer;
a1, a2: Ta;
begin
Write ('Первый массив.');
InArr (a1);
Write ('Второй массив.');
InArr (a2);
l1 := Length (a1);
l2 := Length (a2);
SetLength (a1, l1 + l2);
for i := Low (a2) to High (a2) do
a1 [i + l1] := a2 [i];
Sort (a1);
for i := Low (a1) to High (a1) do
Write (a1 [i], ' ');
ReadLn;
ReadLn;
end.