P1614 爱与愁的心痛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1614
原(80):
#include<iostream>
using namespace std;
int main() {
int ans[50000]{};
int n, m,minn=10000;
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> ans[i];
}
for (int i = 1; i <= n - m+1; i++) {
int sum = 0;
for(int k=0;k<m;k++)
sum += ans[i+k];
if (minn > sum)
minn = sum;
}
cout << minn << endl;
return 0;
}
!定义数组大小
int n, m;
cin>>n>>m;
long a[n + 1];
//洛谷可以通过此方法
数组长度要为用户输入值=>动态数组=>new,delete
法2:滑动窗口
14731243
[147]31243
1[473]1243
求第一个窗口
for (int i = 1; i <= m; i++) {
min = min + a[i];
#include<iostream>
using namespace std;
int main() {
int n, m,ans[50000]{},minn=0;
cin >> n >> m;
//填充ans并计算第一个窗口
for (int i = 1; i <= n; i++) {
cin >> ans[i];
if (i <= m)
minn += ans[i];
}
int light = 1, right = light + m;
int temp = minn;
while (right <= n) {
temp = temp + ans[right]-ans[light];//窗口
if (temp < minn)
minn = temp;
light++;
right++;
}
cout << minn << endl;
return 0;
}
法3:排序