2014-04-26 1 views
0

정확히으로 구성된 모든 가능한 조합을 얻을 수있는 방법을 찾고 있습니다. 내 목적을 위해, 나는 요소의 순서에 관심이 없다. 그 말은 {1,2}가 {2,1}과 같음을 의미합니다.각 그룹에서 정확히 하나의 요소가있는 요소의 모든 조합

가정하자 내가 가지고 다음과 같은 4 그룹 :이 경우

Group 1 = {e1, e2} 
Group 2 = {e3, e4} 
Group 3 = {e5, e6, e7} 
Group 4 = {e8} 

, 나는 내가이 문제를 접근하는 방법을

{e1, e3, e5, e8} 
{e1, e3, e6, e8} 
{e1, e3, e7, e8} 
{e1, e4, e5, e8} 
{e1, e4, e6, e8} 
{e1, e4, e7, e8} 
{e2, e3, e5, e8} 
{e2, e3, e6, e8} 
{e2, e3, e7, e8} 
{e2, e4, e5, e8} 
{e2, e4, e6, e8} 
{e2, e4, e7, e8} 

(실제로는 모든 고유 조합이라고 가정) 할 것이라고 생각 이거? 내 희망은 그저 힌트조차도 나를 도와야한다는 것입니다.

답변

0

중첩 루프. 그것은 꽤되지 않을 것이지만 작동 할 것입니다. 루프 내의 루프 내의 루프. 각 요소를 다른 모든 그룹과 비교하여 다음 요소를 확인하십시오. 이 솔루션은 그룹의 수를 알고있는 경우에만 작동합니다. 또한 큰 그룹 O (n^4)의 경우 속도가 느려집니다.

+0

나는 상대적으로 작은 데이터 세트를 다루기 때문에 실행 시간은별로 중요하지 않습니다. 이 답변은 내가해야 할 일을 성공적으로 마쳤으므로 도움이되었습니다. – user3575087

0
for (var Item1 in Group1) { 
     for (var Item2 in Group2) { 
      for (var Item3 in Group3) { 
       for (var Item4 in Group4) { 
        echo '{'+Item1+','+Item2+','+Item3+','+Item4+')'; 
       } 
      } 
     } 
    }