java游艇问题,租用游艇问题——Java实现

1. 问题描述

长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1£i

2. 编程任务

出租站i到游艇出租站j之间的租金为r(i,j),1≤i

3. 问题分析

仍然使用租金数组 r(i, j)(1≤i

依照上述写出算法的递归式如下:

ec1c10d3fe73e23178476448a6d01d8d.png

4. 代码实现

下面是关键类CalculateRent的实现代码,测试代码就不贴了,因为涉及到文件读写和数组 r[][] 的初始化。

public class CalculateRent {

private int[][] r;

public CalculatePay(int r[][]){

this.r = r;

}

public int[][] calculate(){

int n = r[0].length;

//计算第 i 个站到第 j 个站的最少租金

for (int i = 0; i <= n-1; i++) {//i 代表起始站

for (int j = i+2; j <= n-1; j++) {// j代表终点站

for (int k = i+1; k <=j-1 ; k++) {//k 代表途径站

int m = r[i][k] + r[k][j];//记录下经过 k 站时的租金

if (m

r[i][j] = m;//则把更便宜的值记录下来

}

}

}

return r;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值