读书人

路灯统计,该如何解决

发布时间: 2013-09-14 13:03:22 作者: rapoo

路灯统计
就下面问题,大家发表一下自己的看法吧,我在想找一个比较好的方法。
题目描述
某省会城市街道纵横交错,为了监控路灯的运行状况,每条街道使用一个数字字符串标识该街道上所有路灯的运行状况。
假设路灯只有如下3种状态(分别用数字0, 1, 2标识,一盏路灯只对应其中一种状态):
0 标识路灯熄灭;
1 标识路灯开启;
2 标识路灯故障;
请根据输入的字符串,找出该街道上连续的处于相同状态的路灯的最大个数。若两种状态的路灯数量相同,则返回最先出现的路灯状态。
输入
街道上连续的路灯组成的状态字符串。字符串中只包含数字,每个路灯的状态为0,1,2中的一种状态。如“1101”代表4盏路灯,第3盏路灯为熄灭状态,其它3盏为开启状态。
输出
连续为相同状态的路灯的最大数量;

上述路灯的状态;

要求:先输出数量,再输出状态,两个整数间采用一个空格间隔。如输出:

53 2
样例输入
112200111
样例输出
3 1


首先给大家说说我的想法,首先在字符串里面分别就0,1,2对应的数组下标分别存储在不同的数组中b,再利用b[j]-b[j-1]==1进行判断,如果是就计数加1.最后选择最大值 存储
[解决办法]
这个世界上最大的差别和最远的距离都存在于“说”和“做”之间。

[解决办法]
计数和统计是最基本的操作,do it for yourself
[解决办法]
一个临时变量保存当前最多的数int curNum=1,一个临时变量保存总数最多的数int sumNum=0,一个临时变量保存类型int type。

用一个指针字符串头开始一个字符一个字符往后判断,如果,后一个和前一个相等,则当前最多的数curNum++,并且比较一次if(curNum > sumNum){sumNum = curNum}并且type = 当前指向的那个类型,如果后一个不等于前一个,则curNum = 1;接着往后走到结尾。

最终sumNum 就是总数,type就是类型。

读书人网 >C语言

热点推荐