算法与数据结构实验题 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;
}
posted @ 2016-10-07 23:12  laixl  阅读(515)  评论(0编辑  收藏  举报