文章
1
粉丝
134
获赞
1
访问
9.6k
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
/*
使用DP算法,dp[i]记录到达i位置时的最大值。
状态转移方程:dp[i] = max(dp[i], dp[i-1] + data[i]);
在循环简历dp的过程中,记录结果,以及起始位置和终止位置。
*/
int main() {
int n;
while(scanf("%d", &n) != EOF) {
int a[n];
int memo[n];
int ress, rese, res;
int start = 0, end = 0, sum = 0;
for (int i = 0; i < n; i++) {
char ch[100];
scanf("%s", ch);
getchar();
a[i] = atoi(ch);
//printf("input:%d %d\n", i, a[i]);
}
memo[0] = a[0];
res = memo[0];
for (int i = 1; i < n; i++) {
//printf("here:%d %d %d\n", i, memo[i-1], a[i]);
if (memo[i-1]+a[i]>a[i]) {
memo[i] = memo[i-1]+a[i];
end = i;
//printf("memo1: %d %d\n", i, memo[i]);
}
else {
memo[i] = a[i];
end = i;
...
登录后发布评论
暂无评论,来抢沙发