zoukankan      html  css  js  c++  java
  • 题目:最小乘车费用

    题目描述

    假设某条街上每一公里就有一个公共汽车站,并且乘车费用如下表:
    公里数 1 2 3 4 5 6 7 8 9 10
    费用 12 21 31 40 49 58 69 79 90 101
    而任意一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小
    注意:10公里的费用比1公里小的情况是允许的。

    输入格式

    共两行,第一行为10个不超过200的整数,依次表示行驶1~10公里的费用,相邻两数间用一个空格隔开;第二行为某人想要行驶的公里数(<=100)。

    输出格式

    仅一行,包含一个整数,表示行使这么远所需要的最小费用。

    题解:

    以前没看懂题意,今天看懂了。一条路上有很多汽车站,有个人吃了饭没事干,硬要坐车,让车载他n公里,但同一辆车不能开超过10公里。

    可得动归方程:f[i]=min(f[i-j]+a[j])  (0<=j<=10)

    代码实现:

    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int a[11],f[101],n;
    
    int main()
    {
        int i,j;
        for(i=1;i<=10;i++)
        cin>>a[i];cin>>n;
        
        for(i=1;i<=n;i++) f[i]=0xfffffff;
        
        f[0]=0;
        for(i=1;i<=n;i++)
        for(j=i-1;j>=0&&j>=i-10;j--)
        if(f[i]>f[j]+a[i-j])
        f[i]=f[j]+a[i-j];
        
        cout<<f[n]<<endl;
        
        return 0;
        
        }  
  • 相关阅读:
    UE4 Abc 批量导入
    UE4源码摘录(424)
    JZ10 矩形覆盖
    JZ27 字符串的排列
    JZ66 机器人的运动范围
    JZ65 矩阵中的路径
    JZ12 数值的整数次方
    JZ37 数字在升序数组中出现的次数
    JZ6 旋转数组的最小数字
    JZ67 剪绳子
  • 原文地址:https://www.cnblogs.com/noip/p/2324166.html
Copyright © 2011-2022 走看看