2012-04-24 6 views
-1

2 차원 배열의 모든 가능한 조합을 만들어야합니다. 내가 4 개 루프를 사용하여 4x3의 ... 메신저의 배열이있는 경우, 모든 ... 모든 조합 얻을 ... 3까지 실행가능한 조합과 루프

for.eg 아래로 나는 4x3의 배열이있는 경우 ..

1 2 3 
4 5 6 
7 8 9 
10 11 12 

제가

1,4,7,10 
1,4,7,11 
1,4,7,12 
1,4,8,10 
1,4,8,11 
1,4,8,12 
1,4,9,10 
1,4,9,11 
1,4,9,12 

1,5,8,10 
1,5,8,11 
1,5,8,12 
........... 

과 같은 조합을해야 할 것이다 ....

짧은 그러한 조합 ...이 경우 가능한 조합의 수는 최대 3 전원 것 4 .... 그리고 내가 nxm의 배열을 가지고 있다면 ma ximum 조합은 m 전원 n 것입니다 .... 어느 하나 그것을 만들 수 있습니다 .... 나는 일반에서 해결하기 위해 도움을 원해 ..... 재귀 함수가 사용되어야한다고 생각 ... 내가 모르는 루프의 횟수는 실행 중에 알려질 것입니다 ...

+2

이러한 것들을 _permutations_라고합니다. 그렇게하면 충분히 검색 할 수 있지만 구체적으로 ['std :: next_permutation'] (http://en.cppreference.com/w/cpp/algorithm/next_permutation) 및 그 요구 사항을 살펴보십시오. – ildjarn

+1

이 숙제가 있습니까? –

+0

나는 ur 제공 링크를 보았다 ...하지만 그것은 다른 접근 방식이다 ... – ssaaddii

답변

0
void buildArray(vector <int> build, vector< vector <int> > &arrays) 
{ 
    int position = build.size(); 
    if (position == arrays.size()) { /* current build is one of the solutions*/} 
    else {   
     for (int i = 0; i < arrays[position].size(); i++) 
     { 
      build.push_back(arrays[position][i]); 
      buildArray(build, arrays); 
      build.pop_back(); 
     } 
    } 
} 
+0

이 코드의 조합 (배열)를 인쇄 할 때 PLZ 말해 .. .i 어디서? – ssaaddii

+0

4 행의 주석을 대체해야합니다. build.size() == arrays.size()는 각 배열에서 요소를 가져 왔으 므로 솔루션을 가지고 있음을 나타냅니다. – gabitzish

+0

빌드는 무엇을합니까? – ssaaddii