프로그래밍/알고리즘

이전순열 다음순열

터프 프로그래머 2011. 2. 25. 23:29


#include <iostream>
#include <algorithm>
using namespace std;
void main()
{
 int a[3] = {1, 2, 3};
 int i;
 
 for(i=0; i<3; i++)
  printf("%d ", a[i]);
 printf("\n\n");
 
 // 다음 순열 만들기
 next_permutation(a, a+3); 
 for (i=0; i<3; i++)
  printf("%d ", a[i]);
 printf("\n\n");
 
 // 이전 순열 만들기
 prev_permutation(a, a+3);
 for(i=0; i<3; i++)
  printf("%d ", a[i]);
 printf("\n\n");
 
 // 다음 순열을 만들 수 있는 동안 계속 다음 순열 출력하기
 while(next_permutation(a, a+3))
 {
  for(i=0; i<3; i++)
   printf("%d ", a[i]);
  printf("\n");
 }
 printf("\n\n");
 
 // 이전 순열을 만들 수 있는 동안 계속 이전 순열 출력하기
 while(prev_permutation(a, a+3))
 {
  for(i=0; i<3; i++)
   printf("%d ", a[i]);
  printf("\n");
 }
}

소스에 대한 설명은 역시 주석에 달려 있음~
next_permutation은 다음순열을 만들어주는거고(영어를 보면 알 수 있음. )
prev_permutation은 이전순열을 만들어주는거임