永发信息网

C语言:给定一个整形数组b[n],b中连续相等元素构成的子序列称为平台。编写程序,求出b中最长平台的长度。

答案:2  悬赏:40  手机版
解决时间 2021-05-02 16:17
  • 提问者网友:niaiwoma
  • 2021-05-02 01:07
C语言:给定一个整形数组b[n],b中连续相等元素构成的子序列称为平台。编写程序,求出b中最长平台的长度。
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-05-02 01:37

当n = 10时。。。其它的可以自己改下···


#include<stdio.h>
#define N 10
int main()
{
int b[N];
int i, temp, Max=1, flag=0;
scanf("%d",&b[0]);
for(i=1,temp=1; i<N; ++i)
{
scanf("%d",&b[i]);
if(b[i] == b[i-1])
{ temp ++;flag =1; }
else
{ flag=0;temp=1; }
if(temp>Max)
Max=temp;
}
printf("b中最长平台的长度为%d\n",Max);
return 0;
}


运行后····


全部回答
  • 1楼网友:洒脱疯子
  • 2021-05-02 02:59

递推即可。

在这里,我只能给出程序主要部分,定义部分交给你自己处理。

void main()

{int i,n,max,b[10000],f[10000];

scanf("%d",&n);

for(i=1;i<=n;i++)scanf("%d",&b[i]);

for(i=2;i<=n;i++)

{

if b[i]=b[i-1]f[i]=f[i-1]+1;

else f[i]:=1;

if (f[i]>max)max=f[i]

}

printf("%d",max);

}

更精简版:

void main()

{int n,i,max,a,b,f;

scanf("%d",&n);

scanf("%d",&a);

max=1;

for(i=2;i<=n;i++){

scanf("%d",&b);

if (a=b)f++;

else f=1;

if (f>max)max=f;

a=b;}

printf("%d",max);

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯