0

我正在开发一个用于在公司发布部分的网站,但我遇到了以下需求:

该公司有几个分支机构,每个分支机构都有不同的发送帖子的路线。

例如,我的想法如下:

单元 1 只发送到单元 2,它只发送到单元 3,...

所以,如果我想从单元 1 到单元 6 发布一些东西,它必须通过单元 2、3、4 和 5。在此之前,我能够使用下面的代码:

<%
origem = int(request.querystring("origem"))
destino = int(request.querystring("destino"))
codcorrespondencia = int(request.querystring("codcorrespondencia"))

set rs = server.CreateObject("ADODB.Recordset")
set rs2 = server.CreateObject("ADODB.Recordset")

base = destino
caminho = base

do while not base = origem
rs.open "select * from ESCALAS where codunidade_post = " & base, conexao

    if not rs.fields("codunidade") = origem then
        do while not rs.eof
        rs2.open "select * from ESCALAS where codunidade_post = " & rs.fields("codunidade"), conexao
            if not rs2.eof then
            escalacao = int(rs.fields("codunidade")) & " - " & base & "; " & escalacao 'novas linhas
            base = int(rs.fields("codunidade"))
            end if
        rs2.close

        rs.movenext
        loop
    else
    escalacao = rs.fields("codunidade") & " - " & base & "; " & escalacao 'novas linhas
    base = origem
    end if
rs.close
caminho = base & "," & caminho
loop

response.Write(escalacao)
%>

但是,如果发生以下情况:

单元 1 至 2、2 至 3、4 至 5、4 至 6 和 5 至 6

代码选择从 4 到 5 和 5 到 6 发送,而不是直接从 4 到 6。

我的代码如何变得聪明并选择最短的方式?

为了测试,我放了 var ESCALACAO。它向我展示了代码选择的方式。

4

1 回答 1

0

看起来您需要实现最短路径算法才能找到帖子的最佳路线,因为您有从 4 到 6 的多条路线(直接 4->6 和间接 4->5->6)。

请参阅Wikipedia 上的最短路径问题

于 2013-08-29T08:38:57.000 回答