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