最长平台问题

已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,再1,2,2,3,3,3,,4,5,5,6中1,2.2,3.3.3,4,5.5,6都是平台。试编写一个程序,接收一个数组,把这个数组中最长的平台找出来。在上面的例子中3.3.3就是该数组中最长的平台。

 

 

#include  < stdio.h >
int  main( void )
{
    
int  a[ 10 ] = { 1 , 2 , 2 , 3 , 3 , 3 , 4 , 5 , 5 , 6 },i = 0 ,j = 0 ,k = 0 ,temp = 0 ,num = 1 ,max = 0 ,zh = 0 ;
    
for  (i = 0 ;i <= 9 ;i = j)
        
for  (j = i;j <= 9 ;j ++ )
        {
            
if  (a[j] == a[j + 1 ])
            {
                num
++ ;
                temp
= j + 1 ;

            }
            
else
            {
                num
= 1 ;
                temp
= 0 ;
            }
            
if (max <= num)
            {
                max
= num;
                zh
= temp;
            }
        
        }
    
for (k = 1 ;k <= max;k ++ )
        printf(
" %d  " ,a[zh]);
    
    
return   0 ;
}

 

在VC++6.0环境下编译成功,也可以试试用结构体优化下程序!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值