7-1 租用游艇问题 (18分)

7-1 租用游艇问题 (18分)
7-1 租用游艇问题 (18分)_第1张图片


/*
题目来源:王晓东,《算法设计与分析》
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i
#include 
    using namespace std;

int main()
{
    freopen("abcd1.in", "r", stdin);
    int min[205];       //min[i]为站1到站i最小租金
    int cost[205][205]; //储存输入租金数组
    //输入
    int n;
    while (cin >> n)
    {
        for (int i = 1; i <= n; i++)
        {
            for (int j = i + 1; j <= n; j++)
            {
                cin >> cost[i][j];
            }
        }
    }

    //分别找出站1到站i最小租金
    min[1] = 0;          //站1到站1租金为0
    min[2] = cost[1][2]; //站1到站2只有一种可能,直接列出
    for (int i = 3; i <= n; i++)
    {                        //站1到站3...n的租金,例如站1到站4有三种可能1-4;1-2-4;1-3-4;
        min[i] = cost[1][i]; //默认最小租金为直达
        for (int j = 2; j < i; j++)
        {
            if (min[i] > min[j] + cost[j][i])
            { //此处维护的最小租金列表从前往后,比如站1到站12,可能取路径1-10-12,此处1-10的租金已经是最小
                min[i] = min[j] + cost[j][i];
            }
        }
    }
    cout << min[n];
}
``

你可能感兴趣的:(7-1 租用游艇问题 (18分))