当前位置:首页 > 题解目录 > 正文内容

【题解】公路乘车(动态规划)

亿万年的星光4年前 (2021-12-04)题解目录2071

【题目描述】

一个特别的单行街道在每公里处有一个汽车站。顾客根据他们乘坐汽车的公里使来付费。例如下表就是一个费用的单子。   没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1< =n< =100),它可以通过无限次的换车来完成旅程。最后要求费用最少。

【输入描述】

  第一行十个整数分别表示行走1到10公里的费用(< =500)。注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少。         第二行一个整数n表示,旅客的总路程数。

【输出描述】

仅一个整数表示最少费用。

【样例输入】

12 21 31 40 49 58 69 79 90 101
15

【样例输出】

147


【参考答案】

#include<bits/stdc++.h>
using namespace std;
#define max INT_MAX;
int dp[10];
int minn(int a,int b)
{
    if(a<=b) return a;
    else return b;
}
int main(void)
{
    int va[10];   //费用数组
    for(int i=0;i<10;i++) cin>>va[i];
    int num;
    cin>>num;
    dp[0]=va[0];  //初始值:走一公里最少费用没有其他可能
    for(int i=1;i<num;i++)
    {
        dp[i]=max;
        for(int j=1,n=i;j<=10&&n>=0;j++,n--)//对于每个路程的最少费用
        {         //即为该路程之前的十个公里数的费用加上到该路程的费用的最小值
            dp[i]=minn(dp[i-j]+va[j-1],dp[i]);
        }
    }
    cout<<dp[num-1];
    return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

标签: 动态规划
分享给朋友:

相关文章

【题解】取余(2019青岛市程序设计竞赛)

【问题描述】给你n个正整数a1,a2,..,an。求(a1*a2*..an)%10007的值。【输入】第一行,n,表示整数的个数。第二行,n个用空格隔开的正整数。【输出】一个整数,(a1*a2*..a...

CSPJ2022 乘方

【题目描述】小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数a和b,求ab的值是多少。ab即 b 个a相乘的值,例如23 即为3个2相乘,结果为2×2×2=8。“简单!”小...

【题解】网线主管

【题目描述】仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为...

【题解】黑白棋子移动

【题目描述】有2n个棋子(n≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,如下图为n=5的情形:○○○○○●●●●●移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可...

【题解】装满杯子需要的最短总时长

【题目描述】现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。给你一个下标从&nb...

【题解】凯撒密码

【题目描述】恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果不知道方法, 没有人可以破解.你是恺撒军队的一个上尉. 你...