有教做鱼骨图的网站吗,夺宝网站建设,长春网络营销网站,做venn图的网站题目描述
长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n。游客可在这些游艇出租站租用游艇#xff0c;并在下游的任何一个游艇出租站归还游艇。游艇出租站 i 到游艇出租站 j 之间的租金为 r(i,j)#xff08;1≤ij≤n#xff09;。试设计一个算法#xff0c;计…题目描述
长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n。游客可在这些游艇出租站租用游艇并在下游的任何一个游艇出租站归还游艇。游艇出租站 i 到游艇出租站 j 之间的租金为 r(i,j)1≤ij≤n。试设计一个算法计算出从游艇出租站 1 到游艇出租站 n 所需的最少租金。
输入格式
第一行中有一个正整数 n表示有 n 个游艇出租站。接下来的 n−1 行是一个半矩阵 r(i,j)1≤ij≤n。
输出格式
输出计算出的从游艇出租站 1 到游艇出租站 n 所需的最少租金。
输入输出样例
输入 #1
3
5 15
7
输出 #1
12
说明/提示
n≤200保证计算过程中任何时刻数值都不超过 10^6。
解题思路
单源最短路径问题,用迪杰斯特拉算法可以解决
#includestdio.h
int a[201][201], dis[201], book[201];
int main()
{int n, i, j;scanf(%d, n);for (i 1; i n; i)//邻接矩阵初始化for (j 1; j n; j)if (i ! j)a[i][j] 1e9;for (i 1; i n; i)//输入值for (j i 1; j n; j)scanf(%d, a[i][j]);for (i 1; i n; i)//dis数组初始化dis[i] a[1][i];book[1] 1;for (i 1; i n; i)//{int min 1e9, k 1;for (j 1; j n; j)if (book[j] 0 min dis[j]){min dis[j]; k j;}book[k] 1;for (j 1; j n; j)if (dis[j] min a[k][j])dis[j] min a[k][j];}printf(%d, dis[n]);return 0;
}