1.题目:
Problem Description
给定一个有n个元素的整数数组b,b中连续的相等元素构成的子序列称为平台。设计一个算法求b中最长平台的长度。
Input
第一行为一个数字m,表示下面有m组数据,每组数据包括2行;每组数据中的第一行表示数组的长度n(不会超过20,但可为空表),第二行表示数组的所有元素。
Output
输出最长平台的长度。
Sample Input
2
8
11 3 8 8 8 8 8 7
10
11 3 3 25 8 8 8 8 8 7
Sample Output
5
5
2.参考代码:
#include <iostream>
using namespace std;
class LinkList{
private:
int data[100],len;
public:
LinkList(int* a,int n);
void Delete();
};
LinkList::LinkList(int* a,int n){
for(int i=0;i<n;i++)
data[i]=a[i];
len=n;
}
void LinkList::Delete(){ ///核心代码
if(len==0) ///别忘了空表的处理
{
cout<<0<<endl;
return ;
}
int i,j,k,max=0;
for(i=0;i<len;i++)
{
k=1; ///初始化为一个
for(j=i+1;j<len;j++)
{
if(data[i]!=data[j]) //不相等就结束
break;
k++; ///计算连续相等的个数
}
if(max<k) ///求出最长的平台
max=k;
}
cout<<max<<endl;
}
int main()
{
int t,n,i,a[100];
cin>>t;
while(t--)
{
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
LinkList e(a,n);
e.Delete();
}
return 0;
}