【满分】【华为OD机试真题2023B卷 JS】计算误码率

该博客介绍了华为在线开发者(OD)2023年B卷机试中的一道关于计算误码率的题目。题目要求根据压缩后的字符串计算传输过程中的误码率,其中误码率是错误比特数与传输总比特数之比。字符串被压缩存储,解压后长度相同,题目提供了示例输入和输出,以及解题思路,包括直接对比字符个数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里

计算误码率

知识点双指针

时间限制:1s 空间限制:256MB 限定语言:不限

题目描述:

误码率是最常用的数据通信传输质量指标。它可以理解为“在多少位数据中出现一位差错”。

移动通信网络中的误码率主要是指比特误码率,其计算公式如下:比特误码率=错误比特数/传输总比特数,

为了简单,我们使用字符串来标识通信的信息,一个字符错误了,就认为出现了一个误码

输入一个标准的字符串,和一个传输后的字符串,计算误码率

字符串会被压缩,

例如:“2A3B4D5X1Z” 表示 “AABBBDDDDXXXXXZ

用例会保证两个输入字符串解压后长度一致,解压前的长度不一定一致。

每个生成后的字符串长度<1000000

通信误码是通信过程中由于噪声、信号衰减或其他干扰因素引起的信号错误。解决通信误码的问题是通信领域中非常重要的一项任务。下面是我基于Python的解答: 首先,我们需要定义一个函数来计算两个二进制数字之间的汉明距离,即不同位置的比特数。可以通过将两个二进制数字进行逐位比较来实现。如果两个比特值不同,则汉明距离加1。代码如下: ```python def hamming_distance(bin_1, bin_2): distance = 0 for i in range(len(bin_1)): if bin_1[i] != bin_2[i]: distance += 1 return distance ``` 接下来,我们需要通过输入的二进制数字列表来判断是否存在误码。可以使用两个嵌套的循环来比较所有的数字对,并使用汉明距离函数计算它们之间的距离。如果距离小于等于1,则存在误码。代码如下: ```python def check_error_codes(bin_list): n = len(bin_list) for i in range(n-1): for j in range(i+1, n): distance = hamming_distance(bin_list[i], bin_list[j]) if distance <= 1: return True return False ``` 最后,我们可以编写一个简单的主程序来测上述函数。首先,从用户输入中获取二进制数字列表,然后调用`check_error_codes`函数来检查是否存在误码。根据检查结果,输出相应的提示信息。代码如下: ```python if __name__ == "__main__": bin_list = input("请输入二进制数字列表,以逗号分隔:") bin_list = bin_list.split(",") has_error_codes = check_error_codes(bin_list) if has_error_codes: print("存在误码") else: print("不存在误码") ``` 这样,我们就可以使用上述代码来检查给定的二进制数字列表中是否存在误码。希望这个解答能够帮助你理解该问题的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘上Dancer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值