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

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; row1; row++)
                for(int col=row+1; colfor(int k=2; kfor(int i=0; iint j = i+k;
                    for(int p =i+1; pint 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

你可能感兴趣的:(Algorithm,Java,动态规划,计算机算法设计与分析,计算机算法设计与分析)