问题描述
输入 n 个数,围成一圈,求连续 m(m<n)个数的和最大为多少?
输入格式
输入的第一行包含两个整数 n, m。
第二行,共n个整数。
输出格式
输出 1 行,包含一个整数,连续 m 个数之和的最大值。
样例输入
10 3
9 10 1 5 9 3 2 6 7 4
样例输出
23
数据范围
0 < m < n < 1000
-32768 ≤ 输入的每个数 ≤ 32767。
题解:
#include <iostream>
using namespace std;
const int N = 1010, INF = 0x3f3f3f3f;
int a[N], f[N][N];
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
a[i + n] = a[i];
}
int ans = -INF;
for (int i = 1; i <= n; i ++)
{
for (int j = i; j < i + m; j ++)
f[i][i + m - 1] += a[j];
ans = max(ans, f[i][i + m - 1]);
}
cout << ans << endl;
return 0;
}