next_permutation

현재 나와있는 수열에서 다음 순열을 구하고 true를 반환. 다음 순열이 없다면 false를 반환.

 

prev_permutation

현재 나와있는 수열에서 이전 순열을 구하고 true를 반환. 이전 순열이 없다면 false를 반환.

 

배열의 경우 시작인덱스와 끝 인덱스, 벡터의 경우 iterator를 인자로 넘겨주면 된다.

 

순열을 구하는 코드

 

	int a[3] = { 1, 2, 3 };

	do {
		for (int i = 0; i < 3; ++i)
			cout << a[i];
		cout << '\n';
	} while (next_permutation(a, a + 3));

	/*
	123
	132
	213
	231
	312
	321
	*/

 

조합을 구하는 코드

 

// 4개의 수 중에서 2개를 순서없이 뽑는 조합
// n개의 수 중에서 m개의 수로 조합을 뽑는 경우라면 원소의 개수를 n, 0을 m개만큼 넣어두면 된다
int a[4] = { 0, 0, 1, 1 };

	do {
		for (int i = 0; i < 4; ++i) {
			if (a[i] == 0)
				cout << i + 1;
		}
		cout << '\n';
	} while (next_permutation(a, a + 4));

	/*
	12
	13
	14
	23
	24
	34
	*/

'C++ > 기타' 카테고리의 다른 글

[algorithm] sort, stable_sort  (0) 2022.08.03
[algorithm] find, find_if  (0) 2022.08.03
[algorithm] 교집합, 합집합, 차집합  (0) 2022.07.28
map, set  (0) 2022.07.27
[algorithm] find  (0) 2022.07.27

+ Recent posts