算法设计与分析: 3-9 租用游艇问题

本文介绍了长江游艇俱乐部的租用游艇问题,涉及从游艇出租站1到n的最优化租金计算。通过动态规划方法,解决在n个出租站间租用游艇,寻找最小租金路径的问题。数据输入包括正整数n和各站点间的租金r(i, j),并引用了王晓东《计算机算法设计与分析》一书。" 106489658,7761649,使用Java进行FTP文件传输,"['FTP', 'Java开发', '网络编程']

3-9 租用游艇问题


问题描述

长江游艇俱乐部在长江上设置了n个游艇出租站1,2,3…,n。游客可以在这些游艇出租站用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(ij)r(i,j),1<=i< j <=n。试设计一个算法,计算从游艇出租站1到出租站n所需的最少租金。

数据输入
第1行中有1个正整数n(n<=200),表示有n个游艇出租站,接下来的n-1行是r(i,j),1<=i< j<=n。


Java

import java.util.Scanner;

public class ZuYongYouTing {

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n;
        int[][] fee;

        while (true){
            n = input.nextInt();
            fee = new int[n][n];

            for(int row=0; row<n-1; row++)
                for(int col=row+1; col<n; col++)
                    fee[row][col] = input.nextInt();

            for(int k=2; k<n; k++)
                for(int i=0; i<n-k; i++){
                    int j = i+k;
                    for(int p =i+1; p<j; p++){
                        int tmp = fee[i][p] + fee[p][j];
                        if(fee[i][j] > tmp)
                            fee[i][j] = tmp;
                    }
                }

            System.out.println(fee[0][n-1]);//fee[i][j]: 从第i个出租站到第j个出租站所需的最少租金,可见fee[0][n-1]即为所求
        }
    }
}

Input & Output

3
5 15
7
12

Reference

王晓东《计算机算法设计与分析》(第3版)P91

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值