4) ✔ префиксный длина А: 2, длина Б: 3, длина В: 1, длина Г: 3 Длина сообщения: 10 * 2 + 5 * 3 + 20 * 1 + 5 * 3 = 20 + 15 + 20 + 15 = 70 бит
Наиболее оптимальный код 4).
Если бы нужно было бы найти какое-нибудь оптимальное префиксное кодирование, можно было бы построить код Хаффмана. Выписываем частоты символов, а затем объединяем наименее часто встречающиеся символы, почлучая кодовое дерево.
А - 10, Б - 5, В - 20, Г - 5 А - 10, (БГ) - 10, В - 20 (А(БГ)) - 20, В - 20 (В(А(БГ)) - 40
Если в этой записи есть (XY), то к коду любой буквы из X приписываем слева 0, для любого символа из Y - 1. Начинаем с пустых кодов: (БГ) -> Б: 0, Г: 1 (А(БГ)) -> А: 0, Б: 10, Г: 11 (В(А(БГ)) -> В: 0, А: 10, Б: 110, Г: 111.
Const n=10; var A: array[1..n] of integer; B:array[1..n] of integer; i: integer; sum: integer; begin {Заполнение массивов случайными числами} randomize; for i:=1 to n do begin A[i]:=random(100)-50; B[i]:=random(100)-50; {или B[i]=A[i];, если значения массива B должны совпадать со значениями массива A } end; {Поиск суммы отрицательных элементов} sum:=0; for i:=1 to n do if A[i]<0 then sum:=sum+A[i]; {Замена нулевых элементов массива B на полученную сумму} for i:=1 to n do if B[i]=0 then B[i]:=sum; {Вывод значений массива A} writeln('массив A'); for i:=1 to n do write(A[i],','); writeln(''); writeln('Массив B'); {Вывод значений массива B} for i:=1 to n do write(B[i],',');
{Ожидание нажатия клавиши return от пользователя.} readln; end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку