1. 程式人生 > 實用技巧 >租用遊艇問題

租用遊艇問題

Description

長江遊艇俱樂部在長江上設定了n個遊艇出租站 1,2,…,n。遊客可在這些遊艇出租站租用遊艇,並在下游的任何一個遊艇出租站歸還遊艇。遊艇出租站i到遊艇出租站j之間的租金為r(i,j)。試設計一個演算法,計算出從遊艇出租站1 到遊艇出租站n所需的最少租金。

Input

輸入的第一行是1個正整數nn≤ 200),表示有n個遊艇出租站。

接下來的n-1 行是r(i,j) , 1 ≤i<jn

Output

輸出從 遊艇出租站1 到 遊艇出租站n所需的最少租金。

Sample Input

3
5 15
7

Sample Output

12

Hint

樣例說明:

從1到2,租船費是5;從1到3,租船費是15。

從2到3,租船費是7。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
const int maxn = 1e4+10;
using namespace std;
int dp[220][220];
int main()
{
    int n;
    cin>>n;
    int minn=INF,maxx=-INF;
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++)
            cin>>dp[i][j];
    }
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            for(int k=i+1;k<j;k++)
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
    cout<<dp[1][n]<<endl;
}