//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;
}

3-6租用游艇问题

相关文章: