已知一个已经从小到大排序的数组,这个数组中的一个平台就是连续的一串值相同的元素,并且这一串元素不能再延伸,例如在,1,2,2,3,3,3,4,5,5,6中,1,2. 2,3. 3. 3,4,5.5,6都是平台,试编写一个程序,接受一个数组,把这个数组中最长的平台找出来。再上述例子中3.3.3试最长平台。
//
#include <iostream>
using namespace std;
const int n=20;
int main()
{
int a[n]={1,2,2,3,3,3,3,3,3,4,5,6,6,6,6,6,7,7,7,7};
int ma=0,l=0,p;
int b[20],c[20],i;
for(i=0;i<20;i++)
{
b[i]=0;
c[i]=0;
}
static int j=0;
for(i=0;i<n;i++)
{
if (((i+1)<n)&&(a[i]==a[i+1]))
{
b[j]++;
c[j]=a[i];
}
if (((i+1)<n)&&(a[i]!=a[i+1]))
{
c[j]=a[i];
b[j]++;
j++;
}
if ((i+1)>n)
{
c[j]=a[i];
b[j]++;
break;
}
}
i=0,p=j-1;
while(!(i==p))
{
if (b[i]>=b[p])
{
ma=b[i];
l=i;
p--;
}
if(b[i]<b[p])
{
ma=b[p];
l=p;
i++;
}
}
cout<<c[l]<<endl;
return 0;
}
//