C/C++ 最长平台问题 算法

   已知一个已经从小到大排序的数组,这个数组中的一个平台就是连续的一串值相同的元素,并且这一串元素不能再延伸,例如在,1223334556中,12. 23. 3. 345.56都是平台,试编写一个程序,接受一个数组,把这个数组中最长的平台找出来。再上述例子中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;
}

//

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值