알고리즘

재귀를 이용한 순열 알고리즘

가은파 2015. 11. 19. 22:11

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를 구한다면..

}