文章
1
粉丝
134
获赞
5
访问
10.1k
 
#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;
       ...
    
登录后发布评论
暂无评论,来抢沙发