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

问题描述

关于一道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。

解决方案

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

解决方案二:

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

解决方案三:

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

时间: 2024-11-02 07:31:57

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

字符-一道acm水题 all in all 一直找不出错误 求大神解答

问题描述 一道acm水题 all in all 一直找不出错误 求大神解答 描述字符串s和t均由字母组成,若在t中除去一些字母能够得到s,我们就说s是t的一个子串.比如abc就是acbefc的子串(acbefc去掉第二.第四.第五个字符后就得到abc)输入有若干组输入数据,每组一行,分别为字符串s和t,s与t之间用空格隔开输出对于一组s与t,若s是t的子串,则输出Yes,否则输出No 样例输入sequence subsequence abc acb VERDI vivaVittorioEmanu

c++-一道OJ上的题,数的划分,求大神解答

问题描述 一道OJ上的题,数的划分,求大神解答 有N个排列好的数,不改变排列次序,要分成K个部分,每个部分至少有一个数, (其中K <=N),若将每一个部分的数相乘,然后将K个部分相加,则可以得到一个表达式,求这个表达式的最大数值. 输入格式文件第一行为2个整数N.K下面N行为N个整数(N<=100,整数的范围都在整型以内)样例输入5 2 12345 样例输出121 我的思路是动态规划:以f(ij)表示分成i组,最后一个数是j的最大数值.以下是我的代码: #include <iostre

c语言-一道水题谁想我比水题还水

问题描述 一道水题谁想我比水题还水 求指点求指点不知道是哪里的错误算法是否可以优化实在没c币了请谅解 谢谢了 解决方案 没有C币无所谓,但是真心没法回答你的问题.如果你希望得到及时解答,请使用电脑提问,贴出文本格式的代码. 解决方案二: 你的代码太乱了 没法看 估计是你的排序算法有问题你去百度下常见的排序算法就可以

pat-PAT上的一道水题,网上提交总是提示运行超时

问题描述 PAT上的一道水题,网上提交总是提示运行超时 以下是我的代码: #include int main(void) { char ch; int count[10]; for (int i = 0; i < 10; i++) { count[i] = 0; } while ((ch = getchar()) != 'n') count[ch - '0']++; for (int i = 0; i < 10; i++) if (count[i] != 0) printf("%d:

看一下一道水题的小细节

问题描述 看一下一道水题的小细节 用栈输入地图,怎么正过来??? 点为可走路径 X为墙 求一条可走路径,注意输出是倒着的,因为是栈.思考,如何正过来 4 4 .X.X ..X. X... X... 解决方案 再用一个栈存储一下,再输出

测试-一道水题 求点拨谢谢了

问题描述 一道水题 求点拨谢谢了 杭电2018的题 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述. n=0表示输入数据的结束,不做处理. Output 对于每个测试实例,输出在第n年的时候母牛的数量. 每个输出占一行. Sample Input 2 4 5 0 Sample Output 2 4

HDU1788 水题

本以为是道中国剩余定理的题 结果是一道水题啊 题意就是求最小公倍数然后减去a就可以了 #include <iostream> #include<cstdio> #include<cstring> using namespace std; long long gcd(long long a,long long b) { return b==0?a:gcd(b,a%b); } int main() { long long i,a,m,ans; while(cin>&g

HDU 1228 模拟水题

字符串的水题 用了两种方法做的 感觉做法都很山寨 题目很水 如果不限制小于100会很好   #include <iostream> #include<cstdio> #include<cstring> using namespace std; int pd(string s) { if(s=="zero") return 0; if(s=="one") return 1; if(s=="two") return

c语言-求一道关于C语言概率计算题

问题描述 求一道关于C语言概率计算题 问题描述 生成n个∈[a,b]的随机整数,输出它们的和为x的概率. 输入格式 一行输入四个整数依次为n,a,b,x,用空格分隔. 输出格式 输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出0.3333 数据规模和约定 对于50%的数据,n≤5. 对于100%的数据,n≤100,b≤100. (最好讲清一下思路) 解决方案 两个思路,一个是对n个[a,b]的数据求全组合,并且看其中和为x的数量,两者相除可以得到精确的