最长相等子序列长度(顺序表)

来源:互联网 发布:linux expect sftp 编辑:程序博客网 时间:2024/06/08 23:57

1.题目:

 

 Problem Description

给定一个有n个元素的整数数组b,b中连续的相等元素构成的子序列称为平台。设计一个算法求b中最长平台的长度。

 

 Input

第一行为一个数字m,表示下面有m组数据,每组数据包括2行;每组数据中的第一行表示数组的长度n(不会超过20,但可为空表),第二行表示数组的所有元素。

 

 Output

输出最长平台的长度。

 

 Sample Input

2811 3 8 8 8 8 8 71011 3 3 25 8 8 8 8 8 7

 

 Sample Output

55

 

 

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;}


 

 

 

 

原创粉丝点击