滑动窗口法


分类

  • 定长:窗口长度固定
  • 不定长:窗口长度变化

定长

看题目欧拉计划8

https://axieyun.top/posts/28ef.html

不定长

应用

  • 在某一段连续不定区间求满足某些条件的答案

方法

  • 双指针法
看题
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为K的连续正数序列? Good Luck!
题解
#include <iostream>

using namespace std;

int main() {
    int k, temp = 0;
    cin >> k;
    for (int i = 1, j = 1; i < (k >> 1) + 1 && j < (k >> 1) + 1;) {
        if (temp < k) temp += j, j++;
        else if (temp > k) temp -= i, i++;
        else {
            for (int a = i; a < j; a++) cout << a << ' ';
            cout << endl;
            temp -= i;
            i++;
        }
    }
    return 0;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录