尺取算法

尺取的用途

尺取一般用来选取有一定规律的区间,对一定区间先判断是否符合条件后,再将这个区间推进。

尺取算法

尺取算法就像毛毛虫,一伸一缩的取区间,找到问题的答案。
例如:给长度为n的数组和一个整数m,求总和不小于m的连续子序列的最小长度
输入
n = 10,m = 15
5 1 3 5 10 7 4 9 2 8
输出
2

首先找到一个满足条件(总和不小于m)的子序列,再往后推进。
找出满足条件的长度小的子序列。
过程:

  1. 5 1 3 5 10 7 4 9 2 8
  2. 5 1 3 5 10 7 4 9 2 8
  3. 5 1 3 5 10 7 4 9 2 8
  4. 5 1 3 5 10 7 4 9 2 8
  5. 5 1 3 5 10 7 4 9 2 8
  6. 5 1 3 5 10 7 4 9 2 8
  7. 5 1 3 5 10 7 4 9 2 8
  8. 5 1 3 5 10 7 4 9 2 8

过程像一个毛毛虫爬行,通过判断是否满足条件来推进区间。

完整代码如下:

#include
int main()
{
    int n,m,i,j;
    int a[1001];
    scanf("%d%d",&n,&m);
    for(i=0;i

你可能感兴趣的:(每日一题)