题解 | 小红的地砖
小红的地砖
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;
}

查看13道真题和解析