使用C语言写一段滑动窗口程序
时间: 2023-11-03 22:16:34 浏览: 129
C编写的窗口抖动程序
5星 · 资源好评率100%
滑动窗口是一种常见的算法,可以在O(n)时间内解决很多问题,比如求最大值、最小值、平均值等。下面是一段使用C语言实现的滑动窗口程序,用于求一个数组中,长度为k的连续子数组的最大值。
```c
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int sliding_window(int arr[], int n, int k) {
int i, j, max_sum = 0, sum = 0;
// 计算第一个窗口的和
for (i = 0; i < k; i++) {
sum += arr[i];
}
// 计算后面的窗口的和,并找到最大值
for (i = k; i < n; i++) {
max_sum = max(max_sum, sum);
sum += arr[i] - arr[i-k];
}
// 最后一个窗口的和也要考虑在内
max_sum = max(max_sum, sum);
return max_sum;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 3;
int max_sum = sliding_window(arr, n, k);
printf("The maximum sum of %d consecutive elements is %d\n", k, max_sum);
return 0;
}
```
运行结果:
```
The maximum sum of 3 consecutive elements is 27
```
该程序的时间复杂度为O(n),其中n为数组长度,因为每个元素只会被访问一次。
阅读全文