C++ 회귀를 이용하여서 조합(Combination) 구현.

 

 

[코 드]


#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<vector<int>> result;
vector<int> v = { 1,2,3,4,5 };
int len = v.size();
vector<int> sub;

void ser(int k) {

    if (k == len  ) {
        result.push_back(sub);
    }
    else {
        sub.push_back(v[k]);
        ser( k + 1);
        sub.pop_back();
        ser( k + 1);
    }
}

int main()
{
    ser(0);

    for (int i = 0; i < result.size(); i++) {
        for (int k = 0; k < result[i].size(); k++) {
            cout << result[i][k];
        }
        cout << "\n";
    }

    return 0;
}



8라인 > 결과를 저장할 2차원 vector

9라인 > vector<int> v : 조합을 실행할 값의 집합

10라인 > int len : 조합을 실행할 값의 개수

 

 

 

 

 

 

[ 결 과 ]

 

 

 

 

 

 

 

C++ 회귀를 이용한 순열(permutation) 구현.

 

 

 

 

[ 코 드 ]


#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> result;
vector<int> v = { 1,2,3,4 };
int len = v.size();
bool choose[4];
vector<int> temp;

void ser( int k) {
	if (k == len) {
		result.push_back(temp);
	}
	else {
		for (int i = 0; i < len; i++) {
			if (choose[i]) continue;
			choose[i] = true;
			temp.push_back(v[i]);
			ser(k + 1);
			temp.pop_back();
			choose[i] = false;
		}
	}
}

int main() {

	ser(0);
	for (int i = 0; i < result.size(); i++) {
		for (int k = 0; k < result[i].size(); k++) {
			cout << result[i][k] << " ";
		}
		cout << "\n";
	}

}

7라인 > 결과 값들을 저장할 2차원 vector

8라인 > vector<int> v : 순열을 실행할 값들

9라인 > int len : 값들의 개수

10라인 > len만큼의 크기를 갖는 bool 배열

 

 

 

 

 

[ 결 과 ]

 

 

 

+ Recent posts