qq_32653757 2015-12-10 02:17 采纳率: 76.9%
浏览 1665
已采纳

关于一道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条回答 默认 最新

  • ysuwood 2015-12-12 01:59
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况