PASCAL动态规划一水题稀里糊涂就过了,一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如下表就是一个费用的单子.没有一辆车子行驶超过10公里,一个顾
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 14:14:23
![PASCAL动态规划一水题稀里糊涂就过了,一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如下表就是一个费用的单子.没有一辆车子行驶超过10公里,一个顾](/uploads/image/z/8552755-19-5.jpg?t=PASCAL%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E4%B8%80%E6%B0%B4%E9%A2%98%E7%A8%80%E9%87%8C%E7%B3%8A%E6%B6%82%E5%B0%B1%E8%BF%87%E4%BA%86%2C%E4%B8%80%E4%B8%AA%E7%89%B9%E5%88%AB%E7%9A%84%E5%8D%95%E8%A1%8C%E8%A1%97%E9%81%93%E5%9C%A8%E6%AF%8F%E5%85%AC%E9%87%8C%E5%A4%84%E6%9C%89%E4%B8%80%E4%B8%AA%E6%B1%BD%E8%BD%A6%E7%AB%99.%E9%A1%BE%E5%AE%A2%E6%A0%B9%E6%8D%AE%E4%BB%96%E4%BB%AC%E4%B9%98%E5%9D%90%E6%B1%BD%E8%BD%A6%E7%9A%84%E5%85%AC%E9%87%8C%E4%BD%BF%E6%9D%A5%E4%BB%98%E8%B4%B9.%E4%BE%8B%E5%A6%82%E4%B8%8B%E8%A1%A8%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E8%B4%B9%E7%94%A8%E7%9A%84%E5%8D%95%E5%AD%90.%E6%B2%A1%E6%9C%89%E4%B8%80%E8%BE%86%E8%BD%A6%E5%AD%90%E8%A1%8C%E9%A9%B6%E8%B6%85%E8%BF%8710%E5%85%AC%E9%87%8C%2C%E4%B8%80%E4%B8%AA%E9%A1%BE)
PASCAL动态规划一水题稀里糊涂就过了,一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如下表就是一个费用的单子.没有一辆车子行驶超过10公里,一个顾
PASCAL动态规划一水题稀里糊涂就过了,
一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如下表就是一个费用的单子.
没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1f[i-j]+a[j]) then
f[i]:=f[i-j]+a[j];
writeln(f[n]);
end.
转移方程应该没错,就是初始化的时候不大清楚……
我一开始是f[1]:=a[1];其他都赋值maxint;结果不对……
这样赋值稀里糊涂就过了……
或许还有更好的方法也可.
(我是菜鸟,我知道这是背包的……)
PASCAL动态规划一水题稀里糊涂就过了,一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如下表就是一个费用的单子.没有一辆车子行驶超过10公里,一个顾
把f数组除了f[0]之外全部赋值为manint就可以了
if (i-j>0) and (f[i]>f[i-j]+a[j]) then
这里应该改为
if (i-j>=0) and (f[i]>f[i-j]+a[j]) then
这样f[i]就表示走到第i公里的最优解,第i公里从前面i-1,i-2,i-3.中的最优解中的转移过来,没必要将a中的数据赋值给f
大概是这样了
var
f:array[0..100] of integer;
a:array[1..10] of integer;
i,n,j,k:integer;
begin
for i:=1 to 10 do read(a[i]);
readln(n);
for i:=1 to n do f[i]:=maxint;
for i:=1 to n do
for j:=1 to 10 do
if (i-j>=0) and (f[i]>f[i-j]+a[j]) then
f[i]:=f[i-j]+a[j];
writeln(f[n]);
end.