题解 | 小红的地砖

小红的地砖

https://www.nowcoder.com/practice/8cd083c66a5f43489a532164e2a2304d

#include <stdio.h>
#include <stdlib.h>

int min(int a, int b){
    return a > b ? b : a;
}

int main(void) {
    int n;
    scanf("%d", &n);

    int* a = (int*)malloc(n * sizeof(int));
    int* dp = (int*)malloc(n* sizeof(int));

    for(int i = 0; i < n; i++)
        scanf("%d", &a[i]);

    if(n == 1)
        printf("%d", a[0]);
    else if(n == 2)
        printf("%d", a[0] + a[1]);
    else{
        dp[0] = 0;
        dp[1] = a[0] + a[1];

        for(int i = 2; i < n; i++)
            dp[i] = min(dp[i-1], dp[i-2]) + a[i];
        printf("%d", dp[n-1]);
    }    
    free(dp);
    free(a);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务