文章目录
-
- 描述
- 分析思路
- 关键代码
- 运行结果
描述
给定一个整数数组 cost ,其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。-旦你支付此费用,即可选择向上爬一个或者两个台阶
要求:请你计算并返回达到楼梯顶部的最低花费。
分析思路
由图可分析:比较三组才可确定从下标0开始爬,还是下标1开始。同理依次比较三组。
关键代码
1、if...else if...else进行判断三个连在一起楼梯,中间要支付的费用与两旁相加支付费用的比较。(i+=2)然后进行下三组之间费用的判断。
while (i < n - 1)
{
if ((cost[i] + cost[i + 2]) > (cost[i + 1]))//判断从下标0/1走
{
many += cost[i + 1];
i = i + 2;
}
else if ((cost[i] + cost[i + 2]) < cost[i + 1])//判断从下标0/1走
{
many += cost[i] + cost[i + 2];;
i += 2;
}
else
{
many += cost[i] + cost[i + 2];
i += 2;
}
}
运行代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define n 5
int main() {
int cost[n];
int i = 0, many = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &cost[i]);
}
i = 0;
while (i < n - 1)
{
if ((cost[i] + cost[i + 2]) > (cost[i + 1]))//判断从下标0/1走
{
many += cost[i + 1];
i = i + 2;
}
else if ((cost[i] + cost[i + 2]) < cost[i + 1])//判断从下标0/1走
{
many += cost[i] + cost[i + 2];;
i += 2;
}
else
{
many += cost[i] + cost[i + 2];
i += 2;
}
}
printf("%d\n", many);
return 0;
}