MDGSF Software Engineer

[算法学习][动态规划] 游船费问题

2016-12-21
mdgsf
Art

问题描述

某旅游城市在长江边开辟了若干个旅游景点。 一个游船俱乐部在这些景点都设置了游艇出租站。 游客可在这些游船出租站租用游船,并在下游的任何一个游船出租站归还游船, 从一个游船出租站到下游的游船出租站间的租金明码标价。 你的任务是为游客计算从起点到终点站间的最小租船费用。

输入

输入文件有若干组数据,

每组测试数据的第一行上有一个整数 n(1<=n<=100),表示上游的起点站 0 到下游有 n 个游船出租站 1,2,。。。,n。

接下来有 n 行,

这 n 行中的第 1 行有 n 个整数,分别表示第 0 站到第 1,2,3,。。。,n 站间的游船租金;

第 2 行有 n-1 个整数,分别表示第 1 站到第 2,3,4,。。。n 站间的游船租金;

第 n-1 行有 2 个整数,表示第 n-2 站到第 n-1、n 站间的游船租金;

第 n 行有 1 个整数,表示第 n-1 站到第 n 站间的游船租金。

一行上有两个整数之间是用空格隔开的。

两组测试数据之间无空行。

输出

对输入文件中的每组测试数据,先在一行上输出 “Case #:”, 其中 “#” 测试数据的编号(从 1 开始)。 再输出一行,内容是该情况下游客从起点站到终点站间的最少租船费用。

输入样例
3
2 3 6
1 3
2
输出样例
Case 1:
5
v[i][j] 为从i到j不换船的花费
f[i][j] 为从i到j最小的花费

if(i+1 == j)
    f[i][j] = v[i][j]
else
    f[i][j] = min( v[i][j], f[i][j-1] + v[j-1][j] )

weixingongzhonghao

Comments

Content