问题描述
某旅游城市在长江边开辟了若干个旅游景点。 一个游船俱乐部在这些景点都设置了游艇出租站。 游客可在这些游船出租站租用游船,并在下游的任何一个游船出租站归还游船, 从一个游船出租站到下游的游船出租站间的租金明码标价。 你的任务是为游客计算从起点到终点站间的最小租船费用。
输入
输入文件有若干组数据,
每组测试数据的第一行上有一个整数 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] )