//PascalABC.Net 3.0, сборка 1064 type IntArray = array of integer;
var rows, cols: integer; M: array of IntArray;
begin Write('Количество строк и столбцов матрицы: '); Read(rows, cols); var Avg: array of double := new double[cols]; M := new IntArray[rows]; SetLength(Avg, cols); for var i := 0 to rows - 1 do begin M[i] := ArrRandom(cols, -25, 25); M[i].Println(#9) end; for var j := 0 to cols - 1 do Avg[j] := Range(0, rows - 1).Select(x -> M[x, j]).Average; Writeln('Наименьшее среднее по столбцам равно ', Avg.Min) end.
Итак первые два символа кодируются кодовыми словами 0 и 10. Найдём для оставшихся трех символов наиболее короткое представление, удовлетворяющее условию Фано. Из двузначных чисел можно взять 11, но тогда невозможно подобрать трехзначное число для четвертого символа, по этому не берем. Единственное подходящее трехзначное число - 110 (111 не подходит по той же причине. что и 11). Аналогично выбираем числа 1110 и 11110. В итоге получается ряд: 0, 10, 110, 1110, 11110. Общая длина = 1+2+3+4+5=15
type
IntArray = array of integer;
var
rows, cols: integer;
M: array of IntArray;
begin
Write('Количество строк и столбцов матрицы: '); Read(rows, cols);
var Avg: array of double := new double[cols];
M := new IntArray[rows];
SetLength(Avg, cols);
for var i := 0 to rows - 1 do
begin
M[i] := ArrRandom(cols, -25, 25);
M[i].Println(#9)
end;
for var j := 0 to cols - 1 do
Avg[j] := Range(0, rows - 1).Select(x -> M[x, j]).Average;
Writeln('Наименьшее среднее по столбцам равно ', Avg.Min)
end.
Тестовое решение:
Количество строк и столбцов матрицы: 5 8
-22 -8 12 7 3 -18 8 22
2 -16 17 -13 -10 0 -19 2
20 -21 -6 13 2 -20 25 24
-7 -3 -2 -10 -2 8 18 23
4 -21 -8 8 23 -12 -13 -5
Наименьшее среднее по столбцам равно -13.8
В итоге получается ряд: 0, 10, 110, 1110, 11110.
Общая длина = 1+2+3+4+5=15