题解 | #最小花费爬楼梯#
最小花费爬楼梯
https://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e
#include <stdio.h> #include <stdlib.h> int jump_cost(int a, int arr[]) { int i, b, c, num; if (a == 1) num = arr[0]; else if (a == 2) num = (arr[0] < arr[1] ? arr[0] : arr[1]); else { b = 0; c = 0; for (i = 2; i < a + 1; i++) { num = (arr[i - 2] + b < arr[i - 1] + c ? arr[i - 2] + b : arr[i - 1] + c); b = c; c = num; } } return num; } int main(int argc, char *argv[]) { int num,i; int *arr; while (scanf("%d", &num) == EOF) printf("input error, please input again\n"); arr = malloc(num * sizeof(num)); for (i = 0; i < num; i++) { while (scanf("%d", &arr[i]) == EOF) printf("input error, please input again\n"); } printf("%d\n", jump_cost(num, arr)); return 0; }