最長相等子序列長度(順序表)
阿新 • • 發佈:2019-02-13
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; }