¼ø¿À̶õ ¿ä¼ÒµéÀ» ¼ø¼´ë·Î ¹èÄ¡ÇÏ´Â ¹æ¹ýÀÌ´Ù. ´ÙÀ½ µÎ ÇÔ¼ö´Â ¹Ýº¹ÀÚ ±¸°£¿¡ ÀÖ´Â ¿ä¼ÒÀÇ ÇöÀç°ª¿¡ ´ëÇÑ ´ÙÀ½, ÀÌÀü ¼ø¿À» °è»êÇÑ´Ù. À̶§ ´ÙÀ½, ÀÌÀü ¼ø¿À̶ó´Â °ÍÀº °ªÀÇ ´ë¼Ò °ü°è¸¦ ±âÁØÀ¸·Î ÇÏ¸ç º°µµÀÇ ÇÔ¼ö °´Ã¼·Î ÀÌ °ü°è¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
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
º¤ÅÍÀÇ ¿ä¼Ò °³¼ö°¡ ¸¹À¸¸é ¼ø¿ÀÇ °³¼öµµ ±âÇÏ ±Þ¼öÀûÀ¸·Î ´Ã¾î³¯ °ÍÀÌ´Ù.