//这道题目有点水,读懂题目,一次搜索,然后//然后,标记好每一个位置的最大连续长度即可。。#include <iostream>#include <cstring>#include <cmath>using namespace std;int main(){ int n,
k; int a[30009]; cin
>> n >> k; for (int i
= 1;
i <= n; ++ i) { cin
>> a[i]; } int b[30009]; memset(b, 0,
sizeof(b)); b[1]
= 1; int max
= 1; for (int i
= 2;
i <= n; ++ i) { b[i]
= 1; for (int j
= i - 1;
j >= i - b[i - 1];
-- j) { if (abs(a[j]
- a[i]) <= k) { ++
b[i]; } else { break; } } if (max
< b[i]) { max
= b[i]; } } cout
<< max << endl; //system("pause");}

本文介绍了一种解决特定类型数组问题的方法,通过一次遍历并利用动态规划思想找到满足条件的最大连续子数组长度。该算法适用于需要评估数组中元素间相对距离不超过给定阈值的问题场景。

487

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



