我的第四篇博客(呵呵)
#196. Cows in a Row
题目描述
FJ的N头奶牛站成了一行,每头奶牛都有一个生产值,FJ认为如果将生产值相同的奶牛放在一起更令人注目。
为了使连续相同的奶牛数更多,FJ决定移走一些奶牛,但他只能移走生产值相同的奶牛,请问如何移才能得到最大的生产值连续相同的奶牛。
请求出FJ能得到的最大连续相同生产值的奶牛数。
输入输出格式
输入格式:
第一行,一个整数N(1≤N≤1000);
接下来N行,每行一个整数,表示奶牛的生产值。(生产值的范围是[0,1000000])。
输出格式:
一个整数,表示最大连续相同生产值的奶牛数。
输入输出样例
输入样例:
9 2 7 3 7 7 3 7 5 7
输出样例:
4
说明
样例说明: 把生产值为3的奶牛移走,剩下2 7 7 7 7 5 7,连续的相同生产值的奶牛最大为4。
标准方法(自己理解哈哈)!!
//程序名:新的C++程序 //作者: hehe #include<iostream> #include<fstream> #include<algorithm> using namespace std; int n,o; int a[1000000],b[1000000]; int max1; int l,r; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i]==a[j]) { continue; } else { o++; b[o]=a[j]; } } for(l=1,r=2;r<=o;r++) { if(b[r]!=b[r-1]) { max1=max(r-l,max1),l=r;//max函数求一段最大值 } } max1=max(r-l,max1); o=0; } cout<<max1; return 0; }