• 最小乘车费用


    题目描述:

    某条街上每一公里就有一汽车站,乘车费用如下表:

    公里数 --------- 费用
    1 ---------------- 12
    2 ---------------- 21
    3 ---------------- 31
    4 ---------------- 40
    5 ---------------- 49
    6 ---------------- 58
    7 ---------------- 69
    8 ---------------- 79
    9 ---------------- 90
    10 ---------------- 101(重新排版很累人的……)

    而一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可以任意次换车,请你帮他找到一种乘车方案使费用最小(10公里的费用比1公里小的情况是允许的)。

    编一程序:

    从文件BUSSES.IN中读入对乘车费用的描述;算出最小的价格;把结果写入文件BUSSES.OUT中。

    输入:

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

    输出:

    输出文件仅一行包含一个整数,表示该测试点的最小费用。

    样例输入:

    12 21 31 40 49 58 69 79 90 101
    15

    样例输出:

    147

    首先分析一下题意:这个小家伙要坐车,每走一公里就会有相应的费用,所以给出一个距离,求花费费用的最小值。
    那么可以用贪心的办法。但是——本标签是DP,所以还是用DP的比较好吧……
    先上代码:

    #include<iostream>
        #include<cstdio>
        #include<cstring>
        #include<algorithm>
        using namespace std;
        int f[21],dp[111];
        int n;
        int main()
        {
            memset(dp,127,sizeof(dp));
            for(int i=1;i<=10;i++)
                scanf("%d",&f[i]);
            scanf("%d",&n);
            dp[0]=0;
            dp[1]=f[1];
            for (int i=2;i<=n;i++)
            {
                dp[i]=dp[i-1]+f[1];
                for (int j=2;j<=10 && j<=i;j++)
                dp[i]=min(dp[i],dp[i-j]+f[j]);
            }
            printf("%d",dp[n]);
            return 0;
        } 

    这里有好多东西啊!!!
    先看那个memset,此处的“127”代表的是INF,所以你不需要担心dp的值啦;但是——你会看到main里有一个dp[0]=0,这就是为了补充那个memset,因为memset把0的值也给复制过来了,所以必须得初始化dp[0]的值。
    然后,下面还有一个dp[1]=f[1],意思就是说当dp[]=1的时候,它就等于f[1]的值(反正很好理解,这里就不多做解释了……)。
    还有!!!千万别忘了,你求的是min!!!不是max!!!(如果您要用k来更新的话,也不要忘了把k整的很大啊……)

  • 相关阅读:
    python使用阿里云oss-sdk
    flask-文件上传的使用
    flask-migrate的基本使用
    flask-script的基本使用
    flask-sqlalchemy的基本使用
    alembic的常用参数
    sqlchemy查询的其他操作
    orm层面的删除的注意事项
    C#获取数据库中的Instance
    SOA Demo
  • 原文地址:https://www.cnblogs.com/Zhoier-Zxy/p/8067453.html
Copyright © 2020-2023  润新知