码迷,mamicode.com
首页 > 其他好文 > 详细

快手笔试题

时间:2018-09-11 00:55:16      阅读:1139      评论:0      收藏:0      [点我收藏+]

标签:div   输出   min   turn   cto   air   输入   表示   bsp   

题目:你需要爬上一个N层的楼梯,在爬楼梯的过程中,每阶楼梯需花费非负代价,第 i 阶楼梯花费代价表示cost[i],一旦你付出了代价,你可以在该阶梯基础上往上爬一阶或两阶。在开始时,你可以选择从第 0 阶或第 1 阶开始出发。请计算爬上楼层顶部的最低花费。

 

输入格式:

1,100,1,100,1,1,100,1,1

 

输出格式:

6

 

分析:动态规划。当前最小体力花费=min(距当前位置一阶梯的最小体力花费+走一阶梯的体力花费,距当前位置两阶梯的最小体力花费+走两阶梯的体力花费)。

  • dp[i] = min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]) 

求解:

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        if(cost.size()==0){
            return 0;
        }
        if(cost.size()==1){
            return cost[0];
        }
        if(cost.size()==2){
            return std::min(cost[0],cost[1]);
        }
        int step[1024];
        step[0] = 0;
        step[1] = 0;
        for(int i=2;i<=cost.size();i++){
            step[i] = std::min(step[i-1]+cost[i-1],step[i-2]+cost[i-2]);
        }
        return step[cost.size()];
    }
};

  

快手笔试题

标签:div   输出   min   turn   cto   air   输入   表示   bsp   

原文地址:https://www.cnblogs.com/xzxl/p/9623463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!