游艇租用问题2

来源:互联网 发布:2017中国出口韩国数据 编辑:程序博客网 时间:2024/06/12 01:34

 上一篇 blog 中用了一种方法来解决这个问题。在看别人博客时,发现可以用一维数组两重循环来解决。


状态转移方程 : dp (i)  = min(dp(i),dp(j)+r(j,i)) ; 其中dp(i)初始化为r(0,i), 0<j<i


code 如下:


#include <bits/stdc++.h>using namespace std;int rent[200][200] ;int getMinRenti(int n){    int dp[200] ;    dp[0] = 0 ;    dp[1] = rent[0][1];    for (int i = 2 ; i < n ;++i){            dp[i] = rent[0][i] ;        for (int j = 1 ; j < i ; ++j)        {            dp[i] = min(dp[i], dp[j]+rent[j][i]);        }    }    return dp[n-1];}int main(){    int n ;    while (cin>>n){        for (int i =0 ; i<n-1 ;++i){            for(int j = i+1 ; j < n; ++j){                cin>>rent[i][j] ;            }        }        cout<<"minspent is "<<getMinRenti(n);    }    return 0;}


1 0