2014-05-14 7 views
-3

나는 프로젝트 Euler problem 18에서 일하고있다.두 요소를 반복하는 파이썬리스트

다음과 같은 구조가 있습니다. 이 구조를 설정하는 입력 목록을 어떻게 곱하거나 연결하여 맨 아래의 출력을 얻을 수 있습니까? while 루프를 사용해 보았지만 result.is 다음에이를 수행 할 수 없었습니다. 반복자 또는 가능한 모든 방법을 사용하여이 방법을 얻을 수있는 방법은 없습니다.

코드는 필요 없지만 일부 지침은 도움이 될 것입니다.

이것은 구조입니다.

75 
1 2 
1 2 3 

해결책을 찾으려면 각 노드를 통과하고 싶다고 생각했습니다. 그래서 첫 번째 노드는 75입니다. 75 통과 1,2 이제 75 레벨이되고 75 레벨이됩니다. (75,1)은 1,2를 통과 할 수 있으며 (75,2)는 2,3을 통과 할 수 있습니다. 가능한 경로는 (75,1,1), (75,1,2), (75,2,2), (75,2,3)

작은 예제를 제시하는 목록으로 사용했습니다. 하지만 그렇게 추가 할 수는 없습니다. 당신이 2 2 (1 호선 1 75에서 갈 수있는 동안 나는 그래서

#first loop: 
    [[75,1],[75,2]] 
#second loop: 
    [[75,1,1],[75,1,2],[75,2,2],[75,2,3]] 

을 달성하는 것을 목표로하고있어, 그럼

a=[75] 
b=[1,2] 
c=[1,2,3] 

: 이것은 내가 위의 구조를 표현하는 방법이다 3), 당신은 75에서 1에서 3으로 갈 수 없습니다 (후자의 단계는 너무 큽니다).

+4

이것의 근거는 무엇인가 도움이 될 수 있는가? 나는 패턴을 볼 수 없다 – sshashank124

+0

@ sshashank124 나는 question.still u가 http://projecteuler.net/problem=18 pls를 원한다고 말하고 싶다. 다른 숫자 개념이 있지만 이것을 달성하고 싶다. – user3635426

+0

pls down 유권자 if u는 데이터를 원합니다 .pls는 투표를하지 않습니다. 금지 이유는 배워야 할 질문을 더 많이 묻습니다. 이 내 seconda 카운트 금지로 인해 – user3635426

답변

1

재귀 적 접근 방식은

a=[75] 
b=[1, 2] 
c=[1, 2, 3] 

def dfs(i, j, l): 
    if i==len(t): 
     ll.append(l) 
    elif j==len(t[i])-1: 
     dfs(i+1, j, l+[t[i][j]]) 
    else: 
     dfs(i+1, j, l+[t[i][j]]) 
     dfs(i+1, j+1, l+[t[i][j+1]]) 

t=[a, b, c] 
ll=[] 
dfs(0, 0, []) 
print ll