租用遊艇問題
阿新 • • 發佈:2020-12-04
Description
長江遊艇俱樂部在長江上設定了n個遊艇出租站 1,2,…,n。遊客可在這些遊艇出租站租用遊艇,並在下游的任何一個遊艇出租站歸還遊艇。遊艇出租站i到遊艇出租站j之間的租金為r(i,j)。試設計一個演算法,計算出從遊艇出租站1 到遊艇出租站n所需的最少租金。
Input輸入的第一行是1個正整數n(n≤ 200),表示有n個遊艇出租站。
接下來的n-1 行是r(i,j) , 1 ≤i<j≤n。
Output輸出從 遊艇出租站1 到 遊艇出租站n所需的最少租金。
Sample Input3
5 15
7
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; }