//3-6 计算机算法设计与分析80页
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
int r[101][101] = {0};
int n;
int main() {
scanf ("%d", &n);
for (int i=1; i<n; i++)
for (int j=i+1; j<=n; j++)
scanf ("%d", &r[i][j]);
for (int k=2; k<n; k++) //途中的站点
for (int i=1; i<=n-k; i++) { //每一轮的起点
printf ("------------------\n");
int j = i + k; //终点
printf ("k = %d, i = %d, j = %d\n", k, i, j);
for (int z=i+1; z<=j; z++) { //途中点
int temp = r[i][z] + r[z][j]; //更新
printf ("r[%d][%d], r[%d][%d] = %d %d\n", i, z, z, j, r[i][z], r[z][j]);
printf ("temp = %d\n", temp);
if (temp < r[i][j]) //小就更新
r[i][j] = temp;
}
}
printf ("%d\n", r[1][n]);
return 0;
}
相关文章: