爬楼梯(c)

文章目录

    • 描述
    • 分析思路
    • 关键代码
    • 运行结果

描述

给定一个整数数组 cost,其中cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。-旦你支付此费用,即可选择向上爬一个或者两个台阶

要求:请你计算并返回达到楼梯顶部的最低花费。

分析思路

由图可分析:比较三组才可确定从下标0开始爬,还是下标1开始。同理依次比较三组。

关键代码

1、if...else if...else进行判断三个连在一起楼梯,中间要支付的费用与两旁相加支付费用的比较。(i+=2)然后进行下三组之间费用的判断。

cs 复制代码
    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;
        }
    }

运行代码

css 复制代码
#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;
}
相关推荐
Aaswk5 分钟前
蓝桥杯2025年第十六届省赛真题(更新中)
c语言·数据结构·c++·算法·职场和发展·蓝桥杯
香水5只用六神25 分钟前
【DMA】存储器到外设模式实验2
c语言·git·stm32·单片机·嵌入式硬件·github·visual studio
Yupureki1 小时前
《C++实战项目-高并发内存池》4.CentralCache构造
c语言·开发语言·c++·单例模式·github
xh didida2 小时前
数据结构--实现链式结构二叉树
c语言·数据结构·算法
祈安_2 小时前
动态内存管理(上)
c语言·后端
进击的小头3 小时前
第8篇:PI控制器设计实战演练
c语言·python·mcu·算法
Yupureki3 小时前
《C++实战项目-高并发内存池》8. 最终性能优化与测试
c语言·开发语言·数据结构·c++·算法·性能优化
一叶落4383 小时前
LeetCode 74 | 搜索二维矩阵(C语言版题解)
c语言·数据结构·c++·算法·leetcode·矩阵·动态规划
Yupureki4 小时前
《C++实战项目-高并发内存池》7.大块内存的申请与释放
服务器·c语言·开发语言·c++·算法·哈希算法
爱编码的小八嘎4 小时前
C语言完美演绎3-16
c语言