文章

1

粉丝

134

获赞

1

访问

9.6k

头像
使用DP算法,注意细节
推荐阅读
P1664 中南大学机试题
发布于2021年4月4日 05:00
阅读数 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;
       ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发