数据比较小,直接暴力枚举就ok啦。
#include <iostream>
using namespace std;
int d[30005];
int main()
{
int i, j, n, k, max, min, maxlen = 0;
cin >> n >> k;
for (i = 0; i < n; i ++) cin >> d[i];
for (i = 0; i < n; i ++) //直接穷举搜索
{
max = min = d[i];
for (j = i; j < n; j ++)
{
max = d[j] > max ? d[j] : max;
min = d[j] < min ? d[j] : min;
if ( max - min > k ) break;
if ( j - i + 1 > maxlen ) maxlen = j - i + 1;
}
}
cout << maxlen << endl;
return 0;
}
本文介绍了一个使用暴力枚举算法解决的问题实例。通过直接枚举所有可能的情况来找到最大长度的子序列,使得子序列中最大值与最小值之差不超过给定阈值k。该算法适用于数据规模较小的情况。
1621

被折叠的 条评论
为什么被折叠?



