#include "iostream"
#include "algorithm"
#include "fstream"
using namespace std;
/*
f[i][j]表示出租站i到出租站j之间的最少租金
f[i][j] = min{f[i][k]+f[k][j]}
*/
int f[50][50];
int a[50][50];
int dyna(int n)
{
//初始化
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
f[i][j] = a[i][j];
for(int r=2; r<=n; r++) //问题规模
for(int i=1; i<=n-r+1; i++) //区间左端点
{
int j = i + r - 1; //区间右端点
for(int k=i+1; k<=j; k++) //断点
{
int temp = f[i][k] + f[k][j];
if(temp < f[i][j])
f[i][j] = temp;
}
}
return f[1][n];
}
int main()
{
ifstream fin("rend.txt");
cout << "输入出租站个数:";
int n;
fin >> n; cout << n;
cout << "\n输入租金:\n";
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n-i; j++)
{
fin >> a[i][i+j]; //a[i][j]表示从i到j的租金
cout << a[i][i+j] << " ";
}
cout << endl;
}
cout << "从出租站1到出租站" << n << "的最少租金为:" << dyna(n) << endl;
fin.close();
return 0;
}
租用游艇问题
最新推荐文章于 2022-11-05 17:22:50 发布