题目阅读起来是有点不通顺
查看原帖
题目阅读起来是有点不通顺
331168
王小强楼主2021/8/15 16:56
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

const int INF = 0x3f3f3f3f;

void floyd_algorithm(int (*dp)[210], const int n) {
  int i, j, k;
  for (k = 1; k <= n; ++k)
    for (i = 1; i <= n; ++i)
      for (j = 1; j <= n; ++j)
        dp[i][j] = fmin(dp[i][j], dp[i][k] + dp[k][j]); // 状态转移方程
}

int main(int argc, char const *argv[]) {
  int n;
  fscanf(stdin, "%d", &n);

  int dp[n + 1][210], x, y, w;
  memset(dp, INF, sizeof dp);
  for (y = 1; y <= n; ++y) dp[y][y] = 0;

  for (y = 1; y <= n - 1; y++)
    for (x = y + 1; x <= n; ++x) {
      fscanf(stdin, "%d", &w);
      dp[y][x] = w;
    }

  floyd_algorithm(dp, n);
  return fprintf(stdout, "%d\n", dp[1][n]), 0;
}
2021/8/15 16:56
加载中...