算法与数据结构实验题 4.4 干净的序列
1、题目:
2、解题思路:
其实思路很简单,就是用两个循环把每个子序列最大最小值找出来,然后判断它们在不在范围之内就好了!
3、代码:
#include<iostream>
using namespace std;
int main()
{
int n,m,k,i;
cin>>n>>m>>k;
int a[10001];
for(i=0; i<n; i++)
{
cin>>a[i];
}
int count=0;
for(i=0; i<n; i++)
{
int Max=a[i],min=a[i];
for(int j=i; j<n; j++)
{
if(i==j)
{
if(m!=0)//当序列里只有一个数字时,肯定不在这个范围里,直接将下一个数字增加到序列里,j自增1
{
j++;
}
}
if(a[j]>Max)
{
Max=a[j];
}
if(a[j]<min)
{
min=a[j];
}
int d=Max-min;
if(d>=m&&d<=k)
{
if(count<j-i+1)
{
count=j-i+1;
}
}
//当最大最小值之差超过范围时,直接跳出循环
else if(d>k)
{
break;
}
else
{
continue;
}
}
}
cout<<count<<endl;
return 0;
}