博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小乘车费用
阅读量:7028 次
发布时间:2019-06-28

本文共 1543 字,大约阅读时间需要 5 分钟。

题目描述:

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

公里数 --------- 费用

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
#include
#include
#include
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整的很大啊……)

转载于:https://www.cnblogs.com/Zhoier-Zxy/p/8067453.html

你可能感兴趣的文章
Intellij IDEA 10.5 语言设置
查看>>
Activity 中的Toast在Activity销毁后报错,解决方法,把context改成应用的
查看>>
golang convert integer to float number
查看>>
Dynamics CRM 2015/2016 Web API:新的数据查询方式
查看>>
linux下的僵尸进程处理SIGCHLD信号【转】
查看>>
nextcloud私有云盘的部署
查看>>
喜欢 FineUI,向 FineUI 投一票吧!
查看>>
[置顶] android 自定义TextView
查看>>
两分钟让你明白cocos2dx的屏幕适配策略
查看>>
Salt安装
查看>>
Leetcode: Read N Characters Given Read4 II - Call multiple times
查看>>
PC端政务云产品的一些的看法
查看>>
mysql练习----Self join
查看>>
POJ 2739 Sum of Consecutive Prime Numbers(素数)
查看>>
【转载】以太网帧类型速查表
查看>>
在使用sqlite时淌过的坑
查看>>
Codeforces 444C DZY Loves Colors(线段树)
查看>>
R 给data.frame(dataframe)添加一列
查看>>
[小黑科技] 分享一个可以节省你30分钟的博客园个人博客目录自动生成引擎(过来试玩)...
查看>>
PC_excel完毕一列英文小写变大写
查看>>