Matrix Traversal打印所有和最短路径 - 无限循环

时间:2016-05-14 21:39:37

标签: c++ c++11 matrix

else if((*((array+i*n)+j) == 1) && (!path_checker(path,i,j)))
{
...
}

问题是遍历填充了1和0的* n矩阵,矩阵中的0的数量是元素总数的20%,并打印所有路径,然后打印[0]中的最短路径。 ] [0]到[n] [n],使用四个方向:上,下,左和右。 到目前为止,我已尝试实现打印所有可能的路径。但是,我陷入

的无限循环中
35
48
37
...and so on infinitely (values ranging approx between 30-50)

我用path.size()检查每个实例的大小,输出有点像:

Sub testv()
    Dim v As Variant
    Dim i As Long
    v = Application.VLookup(9, Range("A1:a3"), 1, False)
    If Not IsError(v) Then
        i = CLng(v)
    Else
        MsgBox "not Found"
    End If
End Sub

任何想法如何纠正这个?

编辑:改变了一些逻辑,没有陷入无限循环。但是所有函数调用都通过函数中的“second else”和“third else”退出 - printAllPathsU(...)。

谢谢!

1 个答案:

答案 0 :(得分:0)

只要问题是如何“打印所有路径”,你应该有一个无限循环,因为有无限多的路径。如果问题是如何打印所有非自相交路径,那么这个改述就会提示如何解决问题。