1282: 公交汽车,c++代码实现
题目描述:
解题思路:
根据题目,乘客可以换乘,再通过仔细思考,我们发现,通过换乘可以使费用减小。
什么意思呢?
举个栗子:
我们设乘坐1到10千米分别的价钱分别是:
1 100000 200000 54 65 12 65 24 87 87
一个叫大傻逼大聪明的乘客要乘坐2km的车,如果不换乘,就要消耗100000元(很合理吧),但大聪明通过仔细观察,经过九九七十一天的苦思冥想,经过成千上万次的科学计算,终于发现,只要通过一次换乘(第一次乘坐一千米,第二次也坐一千米),也就是说,大聪明乘坐2km的车只需要1+1=2元就够了。
那么如果要乘坐3km呢?根据数据,要消耗200000元(也很合理)。但我们刚才已经算出,乘坐2km最需要2元,那么如果再乘坐1km,就只需要2+1=3元,而不是200000元了!
现在我们开始写代码
按照以上思路,我们定义一个数组price[101]={0}
,用来装输入的价钱。
首先是输入:
for(int i=1;i<=10;i++)
cin>>price[i];
cin>>n;
假设输入的数据是:
1 3 5 7 9 11 13 15 17 8
11
其中, 第一行十个整数分别表示行走1到10公里的费用
第二行一个整数n表示,旅客的总路程数。
现在price
里的数据为(下标为1-11)
1 3 5 7 9 11 13 15 17 8 0
我们要一个个地处理每千米所要花费的最低价钱,用一个循环:
for(int k=1;k<=n;k++){
尝试寻找k千米的最