您的位置:首页 > 其它

joj2660

2010-08-10 19:26 204 查看
#include<stdio.h>
int a[30005];
int main(){
int n,m;
while(1){

scanf("%d%d",&n,&m);
if(n==0&&m==0)
break;

int i;
for( i=0;i<=n-1;i++)
scanf("%d",&a[i]);

int sum=1;
for( i=0;i<n-1;i++){
int max=a[i];
int min=a[i];
int list=1,j;
for(j=i+1;j<n;j++){
if(sum>n-i)
break;//此算法是利用了测试 数据的不完整而没超时;因为sum>n-i;break;对于最长子段在最后没有作用!
if(a[j]>max)
max=a[j];
else if(a[j]<min)
min=a[j];
if(max-min>m){
break; //此处给的经验是尽量减少循环中的语句;并且尽量使用berak语句跳出循环!!!
}
list++;

}
if(list>sum)
sum=list;

}
printf("%d/n",sum);
}
return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: