您的位置:首页 > 其它

ZZULI  等差数列 解题报告

2012-12-05 17:07 323 查看
这个题可以用搜索的方法遍历所有情况,先排序,然后以前两个数为数列的前两个数,然后寻找后面的数列,记下长度,并与当前最大长度比较,最后得出最大数列

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int m,n,a[108];
int begin,end,max,num,i,j,k,d;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
max=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
num=2;
d=a[j]-a[i];begin=a[i];end=a[j];
for(k=j+1;k<n;k++)
if(a[k]-end==d)
{
begin=end;end=a[k];
num++;
}
if(max<num)max=num;
}
printf("%d\n",max);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: