본문 바로가기

code

std::next_permutation()으로 조합 만들기

주어진 크기 n의 배열 A에서 r개의 원소를 선택하고 싶을 때(nCr), 

 

// 오름차순 조합 생성 3C2 예시 (1, 2) (1, 3) (2, 3)
	bool cbn[n];
	fill(cbn, cbn + r, 0);
	fill(cbn + r, cbn + n, 1);
	do {
		for (int e = 0; e < n; ++e) {
			if (!cbn[e]){
				// 선택된 선택지 A[e]에 대한 처리
			}
		}
	} while (next_permutation(cbn, cbn + n));

 

 

// 내림차순 조합 생성 : 3C2 예시 (2, 3) (1, 3) (1, 2)
	bool cbn[n];
	fill(cbn, cbn + n - r, 0);
	fill(cbn + n - r, cbn + n, 1);
	do {
		for (int e = 0; e < n; ++e) {
			if (cbn[e]){
				// 선택된 선택지 A[e]에 대한 처리
			}
		}
	} while (next_permutation(cbn, cbn + n));