一个旧的British Informatics Olympiad question(3c)询问字母表的最小最小明确编码方案是什么(仅使用两个符号-因此是二进制)。据我所知,答案是130-5位才能存储每个字母,为2 ^ 4
最佳答案
我认为这可行:
a - 0010
b - 0011
c - 0100
d - 0101
e - 0110
f - 0111
g - 10000
h - 10001
i - 10010
j - 10011
k - 10100
l - 10101
m - 10110
n - 10111
o - 11000
p - 11001
q - 11010
r - 11011
s - 11100
t - 11101
u - 11110
v - 11111
w - 00000
x - 00001
y - 00010
z - 00011
这是明确的。如果符号以两个或更少的零开始,则长度为4。如果以1开头,则长度为5。如果以
000
开头,则长度也为5。我从以h开头的长度为4的字符开始理解,使用0作为第一个符号。但是,像这样的方案是两个符号短(如果长度完全由第一个符号确定),因此我寻找一种方法来将四个符号代码的数量减少两个...,并注意到
0000
和0001
是唯一的两个具有三重0
的代码。两位为您提供四个字符,其余为明确的编码方案:)6 * 4 + 20 * 5 = 124
或者
4 + 16 + 6 = 26