저는 해결하기 어려운 몇 가지 제약이있는 매우 이상한 문제가 있습니다. 나는 목록 목록을 가지고 있으며 그 목록에있는 모든 항목의 조합을 원합니다. 각 항목에는 이름과 값이 있습니다.비행 중에 조합법을 수행하는 방법
홈페이지 목록 : 예를 들면 다음과 같습니다
- 목록 01 :
- 항목 01 : 이름 : name01, 값 : value01
- 항목 02 : 이름 : name02, 값 : value02
- 목록 02 :
- 항목 01 : 이름 : name03, 값 : value03 ,451,515,
- 목록 03 :
- 항목 01 : 이름 : name04, 값 : value04
- 항목 02 : 이름 : name05, 값 : value05
최종 결과는 같아야합니다 이 :
일부 목록 :
-
,
- 항목 01 : name01 : value01, name03 : value03, name04 : value04
- 항목 02 : name02 : value02, name03 : value03, name04 : value04
- 항목 03 : name03 : value03, name03 : value03, name04 : value04
- 항목 04 : name01 : value01, name03 : value03, name04 : value05
- 항목 05 : name02 : value02, name03 : value03, name04 : value05
- 항목 06 : name03 : value03, name03 : value03, name04 : value05
새 목록이 거의 포함되어 있습니다. 해시지도처럼 작동하는 항목
- 나는 새 목록으로 수집하고 이러한 목록을 신속 매우 큰 성장할 수 있기를 혼합 할 수 없습니다 :
제약을은 다음과 같습니다.
- 나는 관측자와 비슷한 API를 사용하고 있으므로 관찰자에게 가능한 한 빨리 결과를 알려서 많은 메모리를 사용하지 않아야합니다.
즉,이 조합 생성기에는 각각 N 개의 항목을 포함 할 수있는 X 개의 목록이 제공 될 수 있으며 너무 많은 메모리를 사용하지 않고 조합을 생성해야합니다.
한 번에 5 개 이상의 목록을 사용할 것으로 예상하지는 않지만 가능한 한 코드 변경 사항을 복원 할 수 있도록 알고리즘을 만들고 싶습니다.
자바에서 문제를 해결하고 있지만 알고리즘은 번역 될 가능성이 높기 때문에 다른 언어에서도 똑같이 작동해야합니다.
의견이나 제안이 있으십니까?
미리 감사드립니다.
P. 나는 재귀가 잘 작동한다고 생각하지 않는다. 나는 while 루프와 몇몇 중첩 된 루프를 사용한다는 생각을 가지고 놀고 있지만 이것이 어떻게 작동해야 하는지를 생각하기가 정말로 어려워지고 있습니다.
예문이 명확하지 않아서 - 오류라고 생각합니다. 2, 1, 3 요소의 3 가지 목록을 제안 해 주시겠습니까 ((a, b) (c) (d, e, f)). 그리고 이것은 6 개의 솔루션 (데카르트 제품 또는 교차 제품)으로 이어질 것입니다. 원한다면 a : = (name01, value01)을 읽으십시오. 그러나 귀하의 예는 일부 목록 항목 03 : n3v3 n3v3에 2 번 있습니다. 그건 의도하지 않았지? –