最小乘车费用-SSL 1643

来源:互联网 发布:开淘宝网店进货渠道 编辑:程序博客网 时间:2024/05/16 16:14
Description  假设某条街上每一公里就有一个公共汽车站,并且乘车费用如下表:      而任意一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小   注意:10公里的费用比1公里小的情况是允许的。 Input  输入文件BUSSES.IN,文件共两行,第一行为10个不超过200的整数,依次表示行驶110公里的费用,相邻两数间用一个空格隔开;第二行为某人想要行驶的公里数。Output  输出文件BUSSES.OUT,仅一行,包含一个整数,表示行使这么远所需要的最小费用。Sample Input12 21 31 40 49 58 69 79 90 101 15 Sample Output147题解:这道题用动规,用顺推的方法,跟背包问题差不多,先把f[i]定为maxlongint; if b[i-j]+a[j]<b[i] then b[i]:=b[i-j]+a[j];b[i]用来记录最小的费用。const maxn=200;var i,j,n:longint;    a,b:array[0..200] of longint;begin  for i:=1 to 10 do read(a[i]);  readln(n);  for i:=1 to n do  begin    b[i]:=maxlongint;    for j:=1 to 10 do    if i>=j then     if b[i-j]+a[j]<b[i] then b[i]:=b[i-j]+a[j];  end;  write(b[n]);end.
0 0
原创粉丝点击