修改代码使它地输入为可能会有多组测试数据,首先输入测试数据的组数m; 对于每组测试数据,输入有两行:第一行为整数的个数n; 第二行为n个整数。
时间: 2024-03-23 11:38:02 浏览: 70
好的,我们可以在代码中加入一个循环,使其能够处理多组测试数据。同时,在每组测试数据前也需要输入一个整数表示测试数据组数。
以下是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100000
int n, m;
int a[MAX_N + 1];
int sum[MAX_N + 1];
int dp[MAX_N + 1][2];
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
sum[i] = sum[i - 1] + a[i];
}
memset(dp, 0, sizeof(dp));
int ans = 0;
for (int i = m; i <= n; i++) {
dp[i][0] = dp[i - 1][0];
for (int j = i - m; j >= 0; j--) {
dp[i][0] = (dp[i][0] > dp[j][1] + sum[i] - sum[j]) ? dp[i][0] : dp[j][1] + sum[i] - sum[j];
}
dp[i][1] = (dp[i - 1][1] > dp[i - m][0]) ? dp[i - 1][1] : dp[i - m][0];
ans = (ans > dp[i][0]) ? ans : dp[i][0];
ans = (ans > dp[i][1]) ? ans : dp[i][1];
}
printf("%d\n", ans);
}
return 0;
}
```
现在,该代码可以处理多组测试数据,每组数据的输入格式为:第一行为整数的个数n; 第二行为n个整数。
阅读全文