求数组平台【数组】
时间: 1ms 内存:128M
描述:
给定一个整数数组b[n],b中连续的相等元素构成的子序列称为平台。试设计算法,求出b中最长平台的长度。
输入:
输入数组长度
输入数组中各个元素的值
输出:
平台长度
示例输入:
5
2 1 1 1 2
示例输出:
3
提示:
参考答案(内存最优[748]):
#include<stdio.h>
int main()
{
int i,j,n,flag[100],sum=0,max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&flag[i]);
for(i=0;i<n;i++)
{
if(flag[i]==flag[i+1]&&i!=n-1)
{
sum=0;
for(j=i;j<n;j++)
{
if(flag[j]==flag[i])
sum++;
else
break;
}
if(max<sum)
max=sum;
i=j-1;
}
if(flag[i]!=flag[i+1]&&i==n-1)
{
sum=1;
if(max<sum)
max=sum;
}
}
printf("%d\n",max);
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
int main()
{
int i,j,n,flag[100],sum=0,max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&flag[i]);
for(i=0;i<n;i++)
{
if(flag[i]==flag[i+1]&&i!=n-1)
{
sum=0;
for(j=i;j<n;j++)
{
if(flag[j]==flag[i])
sum++;
else
break;
}
if(max<sum)
max=sum;
i=j-1;
}
if(flag[i]!=flag[i+1]&&i==n-1)
{
sum=1;
if(max<sum)
max=sum;
}
}
printf("%d\n",max);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
