어제 실패, 밤을 보았다거나하지 않았지만, 적어도 지도자.
여덟 여왕 전에 말하는 것은, 내가 먼저 간단한 재귀 발전기를 가지고 :
나 자신이 시간이 잊어 버린 것을 두려워 분석 아래 표를 생각주고,이 다중리스트 [] 바커의 제거이다.
(중첩) DEF를 평평 : 시도 : 하위 목록에 중첩을 위해 : 요소 에 평평하게 (하위 목록) : #의 인쇄 (요소) 항복 요소 # 메인 출력을, 루프를 수신. 다음을 제외하고 형식 오류 반환 중첩 수익률 하위 #
표정은 내가, 사실, 내가 많은 노력을 지출로 이동 후 이해하지 않고,하지 않도록주의 분석, 그 뒤에주의 깊은 분석을 읽을 생각, 아주 간단한 재귀 발전기 것 같다뿐만 아니라 이해
사용이 재귀, 나는 일반적으로 반환이 시간이 두 배 수율로, 몇 가지 간단한 재귀를 작성한 사실, 사람들이 함정에 빠지지있을 것 두 번 수율을 생성, 나는 또한 고통
재귀 발전기는 수율을 사용할 수있는 경우 때문에 팔 여왕 뒤에 재귀 발전기는 두 번 형식을 산출,
다음 필요가 항복 반환 값을 기억, (없음), 또는 케이스 내부 for 루프의 값을 전송하지, 사실, 다음 값의 경우, 나는 시간 분석이 훨씬 덜 우회를 취할 수있을 수 있습니다.
다음 값 테스트에 실패하면, 값리스트 안에 모든 요소 리턴 값 집합의리스트의 옆에있을 수 없으며,이 목록은 단지 첫 번째 값 안에 설정 요소들의 목록을 반환한다.
실패에 대한 구체적인 이유 옆에, 사실, 난 여전히 알아낼 수 없습니다. 당신이 어떤 제안이있을 경우, 메시지를 남겨주세요.
값리스트에서 하나의 모든 요소를 하나의 수율이 원리되지 동일한 원인과주기 값이 될 수 있고, 사이클 시간의 값을리스트 할 것이다.
다음과 같은 오류 사례 :
: DEF (중첩) 평평하게 시도해보십시오 : 중첩의 하위 목록에 대한 요소 = 다음 (평평 (하위 목록)) # 인쇄 (요소) 요소 산출 패턴 화의 요소 (하위 목록)에 대한 #을 : # 인쇄 (요소) # 수율 요소를 형식 오류 제외 : 수율 중첩 A =리스트 ((평탄화 [1 - [[[[2]], 5 [3- [4] [4])) 프린트 (a) B가 = 평탄화 ([2,3] ]) 인쇄 (리스트 (b))
이것은 고장, 출력의 경우 :
[1, 2, 4] [2]
탈곡기의 목록, I 재귀 발전기 및 예비 이해와 정의를 들면,
일반적인 두 수율은 수율이 기준 조건 자식 트리거 후에 값만큼 순환 아버지 수율 상위 수율로 복귀, 출구의 상부 층은 리턴 최 외곽 층을 알고 부모 yelid 복귀의 최 외층에 합격 데이터입니다.
따라서, 하위 수율을 발견 한 후, 기준 조건을 알아 첫째,이 재귀 발전기 보면 내가 이해할 수 있지만, 수율의 아버지는 인식이 되었으나, 나 정말 쓰기, 쓰기 수 있습니다.
이 재단과 8 개의 여왕 코드, 나는 아무 것도 큰 문제를 분석 하였다.
고통 플러스 통증, 고통에 함께 재귀 많은 나는 두통을보고 한 번, 플러스 발전기, 밤 다음 두 시간 좋은 잠을 보낸다. () 오늘 다시 최종 실패
문제의 개요 :
N × N N 체스 퀸즈 그리드에 배치가 두 퀸즈 동일한 행에 있지 않은, 즉 서로를 공격 할 수 있고, 동일한 열 또는 동일한 대각선 모든 진자 방식의 출력.
'' '
의 첫 번째 행의 퀸 번째 요소는, 그 상태가 [0] = 3 인 경우, 목록을 정의
간단히 행 인덱스 열의 내용 첨자 확실히 반복하지로 호출 될 수 있고,리스트 요소는 중복 될 수 없다 ( 요구)
이차원 평면 정의 X가 Y 인 Y 축, X 축에 초점 겹치지 않으면
''
규칙을 정의 다음 퀸의 위치를 만족시키기 위해 어떤 조건 :
DEF 충돌 (나라 nextX) # 상태 조상있을 수 nextX로 정의되는 상기 정의 된 x 좌표 nextY = LEN은 (주)가 '' 경우 이전 중 임의의 모든 퀸즈 콘트라스트 이전과 이후 nextX 정의 퀸 조건이 만족 직접 BREAK true를 반환 '' ' 에 대한 I 의 범위 (nextY) : #가 I 전면 퀸의 y 축의 변수 나타내는 ' ' 열이 동일한 지 여부를 판단하는 제 nextY가-I가 결정 여부 같은 대각선에 '' ' IF - ABS (nextX 주 [내가]) 에서 (0, nextY - I) : # nextY Y 축 퀸 매개 변수를 나타냅니다 반환 진정한 반환 거짓 #의 오류가이 다음 여왕을 설명 반환 위치 표준
호출되는이 기능을 사용하여 후속 테스트 케이스는 다음 이미 전면에 모두가 마지막 좌표를 알고 좌표
queens_t DEF (NUM, 주) : # 쿼리의 마지막 여왕되지 않습니다 : 렌 경우 (주)는 NUM-1 == 범위의 POS에 대한 (NUM) : #이 마지막 퀸즈하려고 각 열 값 확인 (그렇지 않으면 충돌 상태, POS) : 컬럼의 표준 매개 변수의 준수가 # 경우가 반환됩니다. 항복 POS 인쇄 (목록 (queens_t (. 4, (. 1 ,. 3, 0))))
코드 논리는 비교적 간단하다.
이것은 전체 코드, 주석 사실, 매우 풍부하다 전체 로직, 다시 한 번 재귀 시도 만 기본 조건이 만 데이터 레이어를 반환 활성화도 실패, 종료
count_b = 0 # 초기화 착오 중간 주파수 시행 착오의 마지막 번호 = 0 # 초기화 단부 count_s DEF 즈 (NUM, 주) 렌 IF (주) == - NUM 1. # 쿼리 퀸 마지막 아니며, 가변 이 기준 조건에 재귀 반환되었다. (NUM) 범위 내에서 POS를 위해 : #은 마지막으로 각 열 값의 황후 만들려고 노력 하지 않을 경우 충돌 (상태, POS) #을 : 반환되는 컬럼의 표준 매개 변수의 준수가 있다면. 이것이 완료되면 수율 (POS) #이이 자격을 갖춘 여왕의 사슬임을 나타내는 데이터를 반환하는 표준 데이터 포트 : 다른 회사 무료 count_s 가입 count_s가 + = 1 # 마지막 단계 번호를하는 이순신 진 징 시도가 실패한 사람을 : 레인지 (NUM)의 POS에 : #는 마지막 사이클 POS하지 않으면 되지 충돌은 (주는 POS)에 묻 으면 : #은 pos가 유효, 유효 실행하지, 포기 무효 # 결과 = 다음 (여왕 (NUM , 주 + (POS))) # 다음 값으로도, 내가 분석을 자신이 시간, 다음 값을 찾을 수 있어야한다 실패 이러한 실패 오류의 값이기 때문에, # 깊이를, 나는 재검사를 제외하고 시도하지 않으려 # 인쇄 (POS) # 수율 (POS 등) + 결과 퀸즈 (NUM, 주 + (POS))의 결과에 대한 : 루프 # 값 계층은 데이터를 반환, N을 정의 여왕, N-1로 돌아 가기 계층 # 인쇄 ((POS) + 결과) 수율 (POS) 결과 + 그렇지 않으면 : 테스트가 바로 다음주기에 포기하지 않기 때문에 사실 #, 많은 중간 미완성 시험이있다 세계 count_b 번호 중간 주파수 시험 생물 종에 실패 count_b합니다. 1 + = NUM =. 8 인쇄 (목록 (퀸즈 (NUM, ()))) # 인쇄 (LEN (목록 (여왕 (NUM, ())))) 인쇄 (count_b) 인쇄 (count_s)
당시 코드의 최적화 된 버전 :
= 0 count_ss DEF queens_simple (NUM = 8, 상태 = ().) : # 메인 루프를 시작 루프가 단지 어떤 열이 각 원소의 좌표 위치 될 수있다 : POS (NUM) 범위에 대해 아니라면 충돌 (상태 POS) : 들어오는 요소 # 규칙을 따라야 렌 경우 (상태) ==는 NUM- 1 : #의 초기 상태, 초기 상태 (마지막 요소의 출력)으로 돌아 수율 (POS) 다른 : '재귀로' '참조 수는 표준, for 루프에 대한 표준 값을 제공하지, ''반환 층 '을 기본 조건으로 시험 : (NUM, 주 + (POS)) queens_simple에 결과에 대한 수율 (POS) 결과 + 다른 : 세계를 count_ss # 1 실패 횟수가 아닌 단순화 된 버전 번호와 비교하여 일관된 정의한다. + =. 1 count_ss의 인쇄 (목록 (queens_simple ()))
두 코드의 출력 결과는 시행 착오의 수를 포함하여, 일치한다.
다시 결론 :
개인 요약, 재귀 수식에 올바른 데이터 내보내기를 반환 기준 때문에, 먼저 좋은 기본 조건과 같은 몇 가지 조건을 더 중요
둘째, 순서대로 좋은 데이터는 하위 루프 여기, 수용의 올바른 경로로 돌아갑니다 수율이 경우 좋은 형식처럼 데이터를 병합 할 필요가 동의 (반환 값이 있어야합니다), 여전히 매우 좋은 수신
또한 일시적이 아니라 두 말을하지 yiled 무엇을, 기준 조건 데이터로의 회귀, 주요 데이터에 반환.
그것은 퍼거슨, 마지막으로 적어도 읽을 수, 그렇고 그런 카운트 얻을.
다음 링크를 두 사람이, 내가 이해하는 다른 사람들의보고하지 않는 설명, 내가 다른 사람의 글이 이해가 안보고했다.
https://blog.csdn.net/qq_33085753/article/details/86592361
https://blog.csdn.net/wang903039690/article/details/79706311