Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
Program ZAD00; {} uses crt; var a,b:array[1..20] of real; i:integer; mina,minb,s:real; Begin { заполнение массива А} for i:=1 to 7 do begin write('введите элементы a[',i,']='); read(a[i]); end; { заполнение массива B} for i:=1 to 9 do begin write('введите элементы b[',i,']='); read(b[i]); end; { min в массиве А} mina:=a[1]; for i:=1 to 7 do begin a[8]:= 32767 ; if (a[i]>= a[i+1]) and (a[i+1]<=mina) then mina:=a[i+1] end; { min в массиве B} minb:=b[1]; for i:=1 to 9 do begin b[10]:=32767; if (b[i]>= b[i+1]) and (b[i+1]<=minb) then minb:=b[i+1] end; { сложение minA и minB} s:=mina+minb; { вывод результатов на экран for i:=1 to 7 do begin write(a[i],' '); writeln; end; for i:=1 to 9 do begin write(b[i],' '); writeln; end; writeln('minA=',mina); writeln('minB=',minb); writeln('сумма их s=', s); End.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9