42-4-³ª.¼ø¿­ »ý¼º±â

¼ø¿­À̶õ ¿ä¼ÒµéÀ» ¼ø¼­´ë·Î ¹èÄ¡ÇÏ´Â ¹æ¹ýÀÌ´Ù. ´ÙÀ½ µÎ ÇÔ¼ö´Â ¹Ýº¹ÀÚ ±¸°£¿¡ ÀÖ´Â ¿ä¼ÒÀÇ ÇöÀç°ª¿¡ ´ëÇÑ ´ÙÀ½, ÀÌÀü ¼ø¿­À» °è»êÇÑ´Ù. À̶§ ´ÙÀ½, ÀÌÀü ¼ø¿­À̶ó´Â °ÍÀº °ªÀÇ ´ë¼Ò °ü°è¸¦ ±âÁØÀ¸·Î ÇÏ¸ç º°µµÀÇ ÇÔ¼ö °´Ã¼·Î ÀÌ °ü°è¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

bool next_permutation(BiIt first, BiIt last [, BinPred F]);

bool prev_permutation(BiIt first, BiIt last [, BinPred F]);

 

µÎ ÇÔ¼ö ¸ðµÎ ÀÌÀü, ÀÌÈÄ ¼ø¿­ÀÇ Á¸Àç À¯¹«¸¦ ¸®ÅÏÇϴµ¥ ´õ ÀÌ»óÀÇ ¼ø¿­ÀÌ ¾øÀ¸¸é false¸¦ ¸®ÅÏÇÑ´Ù.

 

¿¹ Á¦ : next_permutation

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";

      copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

 

void main()

{

     int i;

     vector<int> vi;

     vi.push_back(1);vi.push_back(2);vi.push_back(3);

     dump("¿øº»",vi);

     for (i=0;i<6;i++) {

          next_permutation(vi.begin(),vi.end());

          dump ("´ÙÀ½",vi);

     }

}

 

º¤ÅÍ¿¡ 1, 2, 3 ¼¼ °³ÀÇ Á¤¼ö¸¦ ³Ö¾î µÎ°í ÀÌ ¼¼ °ªÀ¸·Î ¸¸µé ¼ö ÀÖ´Â ¼ø¿­À» ¸ðµÎ Á¶»çÇØ Ãâ·ÂÇØ º¸¾Ò´Ù. ¸ðµÎ ¿©¼¸ °³ÀÇ ¼ø¿­ÀÌ ¸¸µé¾îÁø´Ù.

 

¿øº»        ==> 1 2 3

´ÙÀ½        ==> 1 3 2

´ÙÀ½        ==> 2 1 3

´ÙÀ½        ==> 2 3 1

´ÙÀ½        ==> 3 1 2

´ÙÀ½        ==> 3 2 1

 

º¤ÅÍÀÇ ¿ä¼Ò °³¼ö°¡ ¸¹À¸¸é ¼ø¿­ÀÇ °³¼öµµ ±âÇÏ ±Þ¼öÀûÀ¸·Î ´Ã¾î³¯ °ÍÀÌ´Ù.