您的位置:首页 > 其它

租用游艇问题

2017-10-28 10:32 435 查看

租用游艇问题

Description
长江游乐俱乐部在长江上设置了n个游艇出租站,游客可以在这些游艇出租站用游艇,并在下游任何一个游艇出租站归还游艇,游艇出租站i到j之间的租金是rent(i,j),其中1<=i

Input
对于每一个测试案例, 通过键盘逐行输入,第1行是输入整数n(如果该整数是0,就表示结束,不需要再处理),表示有n个出租站,接下来是n-1行,第一行表示从 站点1 到 站点2,站点1 到 站点3 所需费用,以此类推

Output
输出最大值

Example Input

3

5 15

7

Example Output

12

思路分析
填表法,从下往上,从左往右,用数组 c[MAX][MAX] 来储存刷新后的从站点 i 到 站点 j 的最小花费

代码块

#include<iostream>
#define MAX 1000
using namespace std;
int c[MAX][MAX];
//核心算法
int dp(int n)
{
for(int i=n; i>=1; i--)
for(int j=i; j<=n; j++)
if(i == j)
c[i][j] = 0;
else
{
for(int k=i+1; k<j; k++)
{
int temp = c[i][k] + c[k][j];
if(temp < c[i][j])
c[i][j] = temp;
}
}
return c[1]
;
}
int main()
{
int n;
cin >> n;
for(int i=1; i<n; i++)
for(int j=i+1; j<=n; j++)
cin >> c[i][j];
cout << dp(n);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: