![]() |
1
2
l可以是0到64,所以不要发送l,发送n和m,因为它们都可以是0,并且不需要达到64(它们只需要添加到64)。 L位必须以1开始和结束,因此不需要传输它们。
为n发送6位
最大开销=10位。
m的位数减少是因为
|
![]() |
2
4
你的分析听起来很适合单vlaue。但是,如果您在一起传输大量这样的值,像gzip这样的通用熵编码算法可能会做得更好,因为它可以很好地消除零字符串,并利用数据中的冗余。 |
![]() |
3
3
正如你所说的问题,不,你不能比你提出的解决方案做得更好。 但是,如果数字中零的分布是倾斜的,那么您可以使用哈夫曼码或类似的技术来表示计数,从而平均获得更好的压缩效果。另一种可能性是,如果零分布从一个64位值强相关到下一个64位值,则使用增量编码。 在这两种情况下,都需要使用一个可变位数的位来表示零的数目。如果你对歪斜或相关性的假设被证明是错误的,那么你可能会平均使用更多的比特,而不是用简单的方法。 |
![]() |
4
1
你的解决方案似乎不错。
实现它并不困难,但是如果没有太多的数据要传输的话,可能会很难。 |
![]() |
5
0
有
序列总数。加上一个表示所有零的序列。做一些数学运算会得到以下结果。
表示2081个可能值需要
|
![]() |
Okonjo Mitchel · CS50凯撒:分段故障问题 2 年前 |
![]() |
Baraa · 而我在java中得到无限的while循环 2 年前 |
![]() |
deficiencyOn · 用DP求解“背包” 6 年前 |
![]() |
Robbie · 使用嵌套的if-else语句理解Do-While循环 6 年前 |
![]() |
Andrei · 查找两个数组中的差异[重复] 6 年前 |
![]() |
Shkarik · 为什么我在Scala中的二进制搜索实现如此缓慢? 7 年前 |