재귀를 이용한 순열 알고리즘
3P2의 순열 : 3개의 수에서 2개를 뽑아 나열할 경우
* c 문법을 기본으로 사용하고, 편의상 C++로 컴파일함.
#include <stdio.h>
void print_arr(int set[], int set_size){
for (int i = 0; i < set_size; i++){
printf("%d", set[i]);
}
printf("\n");
}
void swap_arr(int set[], int l, int r){
int temp;
temp = set[l];
set[l] = set[r];
set[r] = temp;
}
void perm(int set[], int length, int n, int k){
if (length == k){
print_arr(set, length);
return;
}
for (int i = length; i < n; i++){
swap_arr(set, i, length);
perm(set, length + 1, n,k);
swap_arr(set, i, length);
}
}
void main(void){
int my_array[20] = {};
for (int i = 0; i < 20; i++){
my_array[i] = i;
}
perm(my_array, 0, 3, 2); //예를 들어 3p2를 구한다면..
}
'알고리즘' 카테고리의 다른 글
C++ set 예제 연습 (0) | 2021.09.18 |
---|