题意:
n个数的序列,问最长的区间,区间内最大的数和最小的数差小于等于1
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=1e5+10;
int a[maxm];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j;
int sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
int Max=a[i];
int Min=a[i];
for(j=i+1;j<n;j++)
{
if(a[j]>Max)
{
Max=a[j];
}
if(a[j]<Min)
{
Min=a[j];
}
if(Max-Min>1)
{
break;
}
}
int b=j-i;
sum=max(sum,b);
if(sum==n-i)//到sum==n-i就可以结束了,因为后面再循环的话,不会出现比这种情况下还大的了
{
break;
}
}
printf("%d\n",sum);
}
return 0;
}