2014-12-02 1 views
0

는 사전을 고려하십시오. 예를은 [파이썬]

A = [ [B], [C] ] 

를 들어 우리는 내가 재귀 해결책을 마련하기 위해 노력하고

A = [ [B, D, I],[B, D, J], [B, E], [C, H] ] 

에 그것을 확장 할 수 있지만, 나는 완전히 작동 아무것도 얻을 수 없습니다. 이 문제에 접근하는 방법에 대한 제안 사항이 있으십니까?

+2

"나는 재귀 해결책을 마련하기 위해 노력하고 있지만 완벽하게 작동하도록 아무것도 얻을 수 없다." Pls 귀하의 '작동하지 않는'코드를 여기에 게시하십시오. "이 문제에 접근하는 방법에 대한 제안이 있습니까?" 재귀는 확실히 접근 방식입니다 (깊이 우선 검색). – Sriram

답변

0

당신은 다음과 같은 기능을 가진 모든 경로를 찾을 수 있습니다. 그러나 코드를 게시하지 않으면 당신이 자기가 시도하는 것을 알지 못합니다. 그래서 당신은 문제가있는 곳을 알지 못합니다. 그리고 당신까지는 아무 것도 설명 할 수 없었습니다. 당신의 시도하고이 코드에 대해 이야기 :

def find_all_paths(graph, start,path=[]): 
     path=path+[start] 
     if not graph.has_key(start): 
      return [path] 
     paths = [] 
     for nodes in graph[start]: 
      for n in nodes : 
      if n[0] not in path: 
        newpaths = find_all_paths(graph, n[0], path) 
        for newpath in newpaths: 
         paths.append(newpath) 
     return paths 

g={ "A": [ ["B"], ["C"] ], 
    "B": [ ["D"], ["E"] ], 
    "C": [ ["H"] ], 
    "D":[["I"],["J"]] 
} 

Demmo :

print find_all_paths(g,'A') 
[['A', 'B', 'D', 'I'], ['A', 'B', 'D', 'J'], ['A', 'B', 'E'], ['A', 'C', 'H']] 

print find_all_paths(g,'B') 
[['B', 'D', 'I'], ['B', 'D', 'J'], ['B', 'E']] 
관련 문제