我正在尝试编写一个程序,检查给定的矩阵是否有欧拉回路,我正在使用DFS进行检查,但是我的递归调用中存在一些问题。
对于DFSvisited的第一次调用如下所示:DFSvisited(G <- ,0, 1, temp_path = 0)。
对于DFSvisited的第一次调用如下所示:DFSvisited(G <- ,0, 1, temp_path = 0)。
def DFSvisited(G,i,j,temp_path):
G[i][j]=0
G[j][i]=0
temp_path.append(j)
for k in range(0,n):
if G[j][k]==1:
print 'j+++',j,"#### k",k
DFSvisited(G,j,k,temp_path)
我传递一个看起来像这样的矩阵:
0 1 0 0 0 1 0
1 0 1 0 0 1 1
0 1 0 1 1 0 1
0 0 1 0 1 0 0
0 0 1 1 0 1 1
1 1 0 0 1 0 1
0 1 1 0 1 1 0
但是它返回的temp_path是[0, 1, 2, 3, 4, 5, 6, 6, 4, 6, 5, 6]
,而不是第一次迭代中的[0,1,2,3,4,2,6,1,5,0]。
我认为在DFSvisited方法内部的递归调用中我可能错过了某些东西,你有什么想法吗?
谢谢!