zoukankan      html  css  js  c++  java
  • 算法分析---------------------Floyd算法

    -------------------

    Floyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3)。

    对上面这个图的程序

    /*
     * main.cpp
     *
     *  Created on: 2013-8-18
     *      Author: 白强
     */
    
    #include <iostream>
    using namespace std;
    
    const int INF = 100000;
    int n = 10, map[11][11], dist[11][11][11];
    //初始化路径
    void init() {
        int i, j;
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++)
                map[i][j] = (i == j) ? 0 : INF;
        map[1][2] = 2, map[1][4] = 20, map[2][5] = 1;
        map[3][1] = 3, map[4][3] = 8, map[4][6] = 6;
        map[4][7] = 4, map[5][3] = 7, map[5][8] = 3;
        map[6][3] = 1, map[7][8] = 1, map[8][6] = 2;
        map[8][10] = 2, map[9][7] = 2, map[10][9] = 1;
    }
    //核心算法
    void floyd_dp() {
        int i, j, k;
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++)
                dist[i][j][0] = map[i][j];
        for (k = 1; k <= n; k++)
            for (i = 1; i <= n; i++)
                for (j = 1; j <= n; j++) {
                    dist[i][j][k] = dist[i][j][k - 1];
                    if (dist[i][k][k - 1] + dist[k][j][k - 1] < dist[i][j][k])
                        dist[i][j][k] = dist[i][k][k - 1] + dist[k][j][k - 1];
                }
    }
    int main() {
        int k, u, v;
        init();
        floyd_dp();
        while (cin >> u >> v, u || v) {
            for (k = 0; k <= n; k++) {
                if (dist[u][v][k] == INF)
                    cout << "+∞" << endl;
                else
                    cout << dist[u][v][k] << endl;
            }
        }
        return 0;
    }

     输出结果

    1 3
    +∞
    +∞
    +∞
    +∞
    28
    10
    10
    10
    9
    9
    9

  • 相关阅读:
    Vue3教程:Vue3.0 + Vant3.0 搭建种子项目
    硬盘
    org.apache.commons.beanutils.ConversionException: No value specified
    软件设计流程
    CDN使用
    The valid characters are defined in RFC 7230 and RFC 3986
    java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found.
    joomla安装
    LAMP环境
    开源软件
  • 原文地址:https://www.cnblogs.com/bq12345/p/3266161.html
Copyright © 2011-2022 走看看