关于一道OJ水牛排队的水题, 请问大神们能不能告诉我除了常规思路,有没有简单一点的方法

Description (C语言)
John这个农民养了N头牛 ( 1 ≤ N ≤ 1000 )。有一天,他把牛排成一行,每头牛都有一个"品种编码",例如,水牛的编码都是1,黄牛是2,奶牛是3,等等,它们随机分布在这一行中。第i头牛的品种记录在数组B[i]中。

农民John希望这一行牛中如果有连续一片品种相同的牛放在一起,看起来就更加爽心悦目了。于是他从这一排牛中拿走某个品种的牛,以便创造出这样的一片。请你帮他计算一下,如果拿走某个品种的牛后,所能得到最多的品种相同的连续的牛有多少头。

Input
第一行:总的牛的数量N

第二行至N+1行:每行是一个正整数B[i],表示第i头牛的品种。0 ≤ B[i] ≤ 1,000,000

Output
输出一个正整数a,表示John所能制造出的拥有相同品种的连续的牛的最大数量。

Sample Input
9
2
7
3
7
7
3
7
5
7

Sample Output
4

Hint
Sample Input的解释:一共有9头牛,排成一行后的品种分别是 2, 7, 3, 7, 7, 3, 7, 5, 7

Sample Output的解释:拿掉所有品种为3的牛后,这行牛变成 2, 7, 7, 7, 7, 5, 7,这样,就有连续4头牛的品种是7了。

如果拿掉2,就变成 7, 3, 7, 7, 3, 7, 5, 7 ,最多只有2头品种为7的牛连续在一起;

如果拿掉7,就变成 2, 3, 3, 5 ,就最多只有2头品种为3的牛连续在一起;

如果拿掉5,就变成 2, 7, 3, 7, 7, 3, 7, 7 ,也是最多只有2头品种为7的牛连续在一起;

所以,能够得到的最大连续品种的牛的数量是4。

3个回答

1、找出共有几个品种,即多少个不同的数字;
2、删掉一个品种,计算最大连续数;
3、确定哪个品种连续数最大。
这是常规思路。好像没什么简单算法。

无论如何都需要遍历一次数组

1、找出共有几个品种,即多少个不同的数字;
2、删掉一个品种,计算最大连续数;
3、确定哪个品种连续数最大。
这是常规思路。好像没什么简单算法。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问