uses crt; type Tm=array [1..26] of char; var a:Tm; i,n:integer; begin n:=65; for i:=1 to 26 do begin textcolor(red); a[i]:=(chr(n)); write(a[i],' '); n:=n+1; end; writeln; for i:=1 to 26 do begin textcolor(yellow); a[i]:=(chr(123-i)); write(a[i],' '); n:=n+1; end; end.
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
uses crt;
type Tm=array [1..26] of char;
var a:Tm; i,n:integer;
begin
n:=65;
for i:=1 to 26 do
begin
textcolor(red);
a[i]:=(chr(n));
write(a[i],' ');
n:=n+1;
end;
writeln;
for i:=1 to 26 do
begin
textcolor(yellow);
a[i]:=(chr(123-i));
write(a[i],' ');
n:=n+1;
end;
end.