一旦支付,你可选择向上爬一个或者两个台阶,计算到达楼梯顶部最低花费
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//青蛙爬楼梯
int fmin(int a,int b){
return a<b?a:b;
}
void minCostClimbingStairs(int* cost, int costSize){
// int dp[costSize+1];
// 先模拟一个一维数组
int* dp = (int*)malloc((costSize + 1) * sizeof(int));
// if (NULL == dp) {
// perror("minCostClimbingStairs");
// exit(0);
// }
dp[0] = 0;
dp[1] = 0;
for(int i=2;i<=costSize;i++){
dp[i]=fmin(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
printf("%d",dp[costSize]);
// return dp[costSize];
}
int main() {
int cost[10]={2,3,4,5,6,7,8,9,10,11};
minCostClimbingStairs(cost,5);
// printf("Hello, World!\n");
return 0;
}