初级程序员 2020年 下半年 下午

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2022年10月6日 (四) 08:17的版本 (建立内容为“=== 第1题 === 下面流程图所示算法的功能是:在一个二进制位串中,求出连续的“1”构成的所有子串的最大长度M。 文件:…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

第1题

下面流程图所示算法的功能是:在一个二进制位串中,求出连续的“1”构成的所有子串的最大长度M。

软考 程序员 2020 下午 1.png

例如,对于二进制位串0100111011110,M=4。

该算法中,将长度为n的二进制位串的各位数字,按照从左到右的顺序依次存放在数组A[1..n]。

在对各个二进制位扫描的过程中,变量L动态地记录连续“1”的个数。

解析:

(1)处初始化变量L,M,并为L,M赋初始值,所以是 0

(2)处前置判断条件A[i]=1成立,又因为“变量L动态地记录连续“1”的个数”,所以是L+1

(3)处前置判断条件A[i]=1不成立,又因为当前在循环中,上一步可能是“1”,那么变量L就需要置0以便于下一位如果是0重新开始计数,所以是0;

(4)(5)两处放在一起考虑,M用来保存当前最大长度M,需要判段刚刚得到的L的新值是否大于M中保存的值,如果不大于就继续下一次循环,如果大于就要给M重新赋值,所以是M;