ITPub博客

首页 > > > 为什么这个错了,那个对了?

为什么这个错了,那个对了?

作者:u_151d1ef45539 时间:2019-11-06 14:01:48 0 删除 编辑

题目

1003:最长相等子序列长度

Time/Memory Limit:1000 MS/32768 K

Submitted: 68 Accepted: 27

Problem Description

给定一个有n个元素的整数数组b,b中连续的相等元素构成的子序列称为平台。设计一个算法求b中最长平台的长度。

Input

第一行表示下面有m组数据,每组数据包括2行;每组数据中的第一行表示数组的长度n(不会超过20,但可为空表);每组数据中的第二行表示数组的所有元素。

Output

最长平台的长度。

Sample Input

2

8

11 3 8 8 8 8 8 7

10

11 3 3 25 8 8 8 8 8 7

Sample Output

5

5

正解

#include

using namespace std;

int main()

{

int n,x,a[100],s,max,i,j;

cin>>n;

while(n--)

{

cin>>x;

for(i=0;i

cin>>a[i];

max=0;

for(i=0;i

{

s=1;

for(j=i+1;j

{

if(a[i]!=a[j])

break;

s++;

}

if(s>max)

max=s;

}

cout<

}

return 0;

}

另解(错误答案)

#include

using namespace std;

class array

{

private:

int data[21];

int length;

public:

array()

{

length=0;

}

array(int b[],int n)

{

int i;

length=n;

for(i=0;i

data[i]=b[i];

}

int con()

{

int i,m=0,n=0;

for(i=0;i

{

if(data[i]==data[i+1])

m++;

if(m!=0&&n!=0)

n=(m>n?m:n);

if(m!=0&&data[i]!=data[i+1])

{  n=m;m=0;}

}

if(n!=0)

return n+1;

else

return n;

}

};

int main()

{

int t,n,i,y;

int a[20];

cin>>n;

while (n--)

{

cin>>t;

for(i=0;i

cin>>a[i];

if (n<=20)

{

array A(a,t);

y=A.con();

cout<

}

}

return 0;

}

求正解与错解得不同,错解是错在哪里?呜呜

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69927053/viewspace-3131283/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Git 分支管理
请登录后发表评论 登录
全部评论

注册时间:2019-07-31

  • 博文量
    155
  • 访问量
    256