next_permutation의 기본 동작 방식

Example

    for(int i = 1; i <7; i++)
        num.push_back(i);
    do{
        for(int i = 0; i < num.size();i++){
            cout << num[i] << " ";
        }
        cout << endl;
    }while(next_permutation(num.begin(),num.end()));

 

1 2 3 4 5 6 
1 2 3 4 6 5 
1 2 3 5 4 6 
1 2 3 5 6 4 
1 2 3 6 4 5 
1 2 3 6 5 4 
1 2 4 3 5 6 
1 2 4 3 6 5 
1 2 4 5 3 6 
1 2 4 5 6 3 
1 2 4 6 3 5 
1 2 4 6 5 3 
1 2 5 3 4 6 
1 2 5 3 6 4 
1 2 5 4 3 6 
1 2 5 4 6 3 
1 2 5 6 3 4 
1 2 5 6 4 3 
1 2 6 3 4 5 
1 2 6 3 5 4 
1 2 6 4 3 5 
1 2 6 4 5 3 
1 2 6 5 3 4 
1 2 6 5 4 3 
1 3 2 4 5 6 
1 3 2 4 6 5 
1 3 2 5 4 6 
1 3 2 5 6 4 
1 3 2 6 4 5 
1 3 2 6 5 4 
1 3 4 2 5 6 
1 3 4 2 6 5 
1 3 4 5 2 6 
1 3 4 5 6 2 
1 3 4 6 2 5 
1 3 4 6 5 2 
1 3 5 2 4 6 
1 3 5 2 6 4 
1 3 5 4 2 6 
1 3 5 4 6 2 
1 3 5 6 2 4 
1 3 5 6 4 2 
1 3 6 2 4 5 
1 3 6 2 5 4 
1 3 6 4 2 5 
1 3 6 4 5 2 
1 3 6 5 2 4 
1 3 6 5 4 2 
1 4 2 3 5 6 
1 4 2 3 6 5 
1 4 2 5 3 6 
1 4 2 5 6 3 
1 4 2 6 3 5 
1 4 2 6 5 3 
1 4 3 2 5 6 
1 4 3 2 6 5 
1 4 3 5 2 6 
1 4 3 5 6 2 
1 4 3 6 2 5 
1 4 3 6 5 2 
1 4 5 2 3 6 
1 4 5 2 6 3 
1 4 5 3 2 6 
1 4 5 3 6 2 
1 4 5 6 2 3 
1 4 5 6 3 2 
1 4 6 2 3 5 
1 4 6 2 5 3 
1 4 6 3 2 5 
1 4 6 3 5 2 
1 4 6 5 2 3 
1 4 6 5 3 2 
1 5 2 3 4 6 
1 5 2 3 6 4 
1 5 2 4 3 6 
1 5 2 4 6 3 
1 5 2 6 3 4 
1 5 2 6 4 3 
1 5 3 2 4 6 
1 5 3 2 6 4 
1 5 3 4 2 6 
1 5 3 4 6 2 
1 5 3 6 2 4 
1 5 3 6 4 2 
1 5 4 2 3 6 
1 5 4 2 6 3 
1 5 4 3 2 6 
1 5 4 3 6 2 
1 5 4 6 2 3 
1 5 4 6 3 2 
1 5 6 2 3 4 
1 5 6 2 4 3 
1 5 6 3 2 4 
1 5 6 3 4 2 
1 5 6 4 2 3 
1 5 6 4 3 2 
1 6 2 3 4 5 
1 6 2 3 5 4 
1 6 2 4 3 5 
1 6 2 4 5 3 
1 6 2 5 3 4 
1 6 2 5 4 3 
1 6 3 2 4 5 
1 6 3 2 5 4 
1 6 3 4 2 5 
1 6 3 4 5 2 
1 6 3 5 2 4 
1 6 3 5 4 2 
1 6 4 2 3 5 
1 6 4 2 5 3 
1 6 4 3 2 5 
1 6 4 3 5 2 
1 6 4 5 2 3 
1 6 4 5 3 2 
1 6 5 2 3 4 
1 6 5 2 4 3 
1 6 5 3 2 4 
1 6 5 3 4 2 
1 6 5 4 2 3 
1 6 5 4 3 2 
2 1 3 4 5 6 
2 1 3 4 6 5 
2 1 3 5 4 6 
2 1 3 5 6 4 
2 1 3 6 4 5 
2 1 3 6 5 4 
2 1 4 3 5 6 
2 1 4 3 6 5 
2 1 4 5 3 6 
2 1 4 5 6 3 
2 1 4 6 3 5 
2 1 4 6 5 3 
2 1 5 3 4 6 
2 1 5 3 6 4 
2 1 5 4 3 6 
2 1 5 4 6 3 
2 1 5 6 3 4 
2 1 5 6 4 3 
2 1 6 3 4 5 
2 1 6 3 5 4 
2 1 6 4 3 5 
2 1 6 4 5 3 
2 1 6 5 3 4 
2 1 6 5 4 3 
2 3 1 4 5 6 
2 3 1 4 6 5 
2 3 1 5 4 6 
2 3 1 5 6 4 
2 3 1 6 4 5 
2 3 1 6 5 4 
2 3 4 1 5 6 
2 3 4 1 6 5 
2 3 4 5 1 6 
2 3 4 5 6 1 
2 3 4 6 1 5 
2 3 4 6 5 1 
2 3 5 1 4 6 
2 3 5 1 6 4 
2 3 5 4 1 6 
2 3 5 4 6 1 
2 3 5 6 1 4 
2 3 5 6 4 1 
2 3 6 1 4 5 
2 3 6 1 5 4 
2 3 6 4 1 5 
2 3 6 4 5 1 
2 3 6 5 1 4 
2 3 6 5 4 1 
2 4 1 3 5 6 
2 4 1 3 6 5 
2 4 1 5 3 6 
2 4 1 5 6 3 
2 4 1 6 3 5 
2 4 1 6 5 3 
2 4 3 1 5 6 
2 4 3 1 6 5 
2 4 3 5 1 6 
2 4 3 5 6 1 
2 4 3 6 1 5 
2 4 3 6 5 1 
2 4 5 1 3 6 
2 4 5 1 6 3 
2 4 5 3 1 6 
2 4 5 3 6 1 
2 4 5 6 1 3 
2 4 5 6 3 1 
2 4 6 1 3 5 
2 4 6 1 5 3 
2 4 6 3 1 5 
2 4 6 3 5 1 
2 4 6 5 1 3 
2 4 6 5 3 1 
2 5 1 3 4 6 
2 5 1 3 6 4 
2 5 1 4 3 6 
2 5 1 4 6 3 
2 5 1 6 3 4 
2 5 1 6 4 3 
2 5 3 1 4 6 
2 5 3 1 6 4 
2 5 3 4 1 6 
2 5 3 4 6 1 
2 5 3 6 1 4 
2 5 3 6 4 1 
2 5 4 1 3 6 
2 5 4 1 6 3 
2 5 4 3 1 6 
2 5 4 3 6 1 
2 5 4 6 1 3 
2 5 4 6 3 1 
2 5 6 1 3 4 
2 5 6 1 4 3 
2 5 6 3 1 4 
2 5 6 3 4 1 
2 5 6 4 1 3 
2 5 6 4 3 1 
2 6 1 3 4 5 
2 6 1 3 5 4 
2 6 1 4 3 5 
2 6 1 4 5 3 
2 6 1 5 3 4 
2 6 1 5 4 3 
2 6 3 1 4 5 
2 6 3 1 5 4 
2 6 3 4 1 5 
2 6 3 4 5 1 
2 6 3 5 1 4 
2 6 3 5 4 1 
2 6 4 1 3 5 
2 6 4 1 5 3 
2 6 4 3 1 5 
2 6 4 3 5 1 
2 6 4 5 1 3 
2 6 4 5 3 1 
2 6 5 1 3 4 
2 6 5 1 4 3 
2 6 5 3 1 4 
2 6 5 3 4 1 
2 6 5 4 1 3 
2 6 5 4 3 1
3 1 2 4 5 6 
3 1 2 4 6 5 
3 1 2 5 4 6 
3 1 2 5 6 4 
3 1 2 6 4 5 
3 1 2 6 5 4 
3 1 4 2 5 6 
3 1 4 2 6 5 
3 1 4 5 2 6 
3 1 4 5 6 2 
3 1 4 6 2 5 
3 1 4 6 5 2 
3 1 5 2 4 6 
3 1 5 2 6 4 
3 1 5 4 2 6 
3 1 5 4 6 2 
3 1 5 6 2 4 
3 1 5 6 4 2 
3 1 6 2 4 5 
3 1 6 2 5 4 
3 1 6 4 2 5 
3 1 6 4 5 2 
3 1 6 5 2 4 
3 1 6 5 4 2 
3 2 1 4 5 6 
3 2 1 4 6 5 
3 2 1 5 4 6 
3 2 1 5 6 4 
3 2 1 6 4 5 
3 2 1 6 5 4 
3 2 4 1 5 6 
3 2 4 1 6 5 
3 2 4 5 1 6 
3 2 4 5 6 1 
3 2 4 6 1 5 
3 2 4 6 5 1 
3 2 5 1 4 6 
3 2 5 1 6 4 
3 2 5 4 1 6 
3 2 5 4 6 1 
3 2 5 6 1 4 
3 2 5 6 4 1 
3 2 6 1 4 5 
3 2 6 1 5 4 
3 2 6 4 1 5 
3 2 6 4 5 1 
3 2 6 5 1 4 
3 2 6 5 4 1 
3 4 1 2 5 6 
3 4 1 2 6 5 
3 4 1 5 2 6 
3 4 1 5 6 2 
3 4 1 6 2 5 
3 4 1 6 5 2 
3 4 2 1 5 6 
3 4 2 1 6 5 
3 4 2 5 1 6 
3 4 2 5 6 1 
3 4 2 6 1 5 
3 4 2 6 5 1 
3 4 5 1 2 6 
3 4 5 1 6 2 
3 4 5 2 1 6 
3 4 5 2 6 1 
3 4 5 6 1 2 
3 4 5 6 2 1 
3 4 6 1 2 5 
3 4 6 1 5 2 
3 4 6 2 1 5 
3 4 6 2 5 1 
3 4 6 5 1 2 
3 4 6 5 2 1 
3 5 1 2 4 6 
3 5 1 2 6 4 
3 5 1 4 2 6 
3 5 1 4 6 2 
3 5 1 6 2 4 
3 5 1 6 4 2 
3 5 2 1 4 6 
3 5 2 1 6 4 
3 5 2 4 1 6 
3 5 2 4 6 1 
3 5 2 6 1 4 
3 5 2 6 4 1 
3 5 4 1 2 6 
3 5 4 1 6 2 
3 5 4 2 1 6 
3 5 4 2 6 1 
3 5 4 6 1 2 
3 5 4 6 2 1 
3 5 6 1 2 4 
3 5 6 1 4 2 
3 5 6 2 1 4 
3 5 6 2 4 1 
3 5 6 4 1 2 
3 5 6 4 2 1 
3 6 1 2 4 5 
3 6 1 2 5 4 
3 6 1 4 2 5 
3 6 1 4 5 2 
3 6 1 5 2 4 
3 6 1 5 4 2 
3 6 2 1 4 5 
3 6 2 1 5 4 
3 6 2 4 1 5 
3 6 2 4 5 1 
3 6 2 5 1 4 
3 6 2 5 4 1 
3 6 4 1 2 5 
3 6 4 1 5 2 
3 6 4 2 1 5 
3 6 4 2 5 1 
3 6 4 5 1 2 
3 6 4 5 2 1 
3 6 5 1 2 4 
3 6 5 1 4 2 
3 6 5 2 1 4 
3 6 5 2 4 1 
3 6 5 4 1 2 
3 6 5 4 2 1 
4 1 2 3 5 6 
4 1 2 3 6 5 
4 1 2 5 3 6 
4 1 2 5 6 3 
4 1 2 6 3 5 
4 1 2 6 5 3 
4 1 3 2 5 6 
4 1 3 2 6 5 
4 1 3 5 2 6 
4 1 3 5 6 2 
4 1 3 6 2 5 
4 1 3 6 5 2 
4 1 5 2 3 6 
4 1 5 2 6 3 
4 1 5 3 2 6 
4 1 5 3 6 2 
4 1 5 6 2 3 
4 1 5 6 3 2 
4 1 6 2 3 5 
4 1 6 2 5 3 
4 1 6 3 2 5 
4 1 6 3 5 2 
4 1 6 5 2 3 
4 1 6 5 3 2 
4 2 1 3 5 6 
4 2 1 3 6 5 
4 2 1 5 3 6 
4 2 1 5 6 3 
4 2 1 6 3 5 
4 2 1 6 5 3 
4 2 3 1 5 6 
4 2 3 1 6 5 
4 2 3 5 1 6 
4 2 3 5 6 1 
4 2 3 6 1 5 
4 2 3 6 5 1 
4 2 5 1 3 6 
4 2 5 1 6 3 
4 2 5 3 1 6 
4 2 5 3 6 1 
4 2 5 6 1 3 
4 2 5 6 3 1 
4 2 6 1 3 5 
4 2 6 1 5 3 
4 2 6 3 1 5 
4 2 6 3 5 1 
4 2 6 5 1 3 
4 2 6 5 3 1 
4 3 1 2 5 6 
4 3 1 2 6 5 
4 3 1 5 2 6 
4 3 1 5 6 2 
4 3 1 6 2 5 
4 3 1 6 5 2 
4 3 2 1 5 6 
4 3 2 1 6 5 
4 3 2 5 1 6 
4 3 2 5 6 1 
4 3 2 6 1 5 
4 3 2 6 5 1 
4 3 5 1 2 6 
4 3 5 1 6 2 
4 3 5 2 1 6 
4 3 5 2 6 1 
4 3 5 6 1 2 
4 3 5 6 2 1 
4 3 6 1 2 5 
4 3 6 1 5 2 
4 3 6 2 1 5 
4 3 6 2 5 1 
4 3 6 5 1 2 
4 3 6 5 2 1 
4 5 1 2 3 6 
4 5 1 2 6 3 
4 5 1 3 2 6 
4 5 1 3 6 2 
4 5 1 6 2 3 
4 5 1 6 3 2 
4 5 2 1 3 6 
4 5 2 1 6 3 
4 5 2 3 1 6 
4 5 2 3 6 1 
4 5 2 6 1 3 
4 5 2 6 3 1 
4 5 3 1 2 6 
4 5 3 1 6 2 
4 5 3 2 1 6 
4 5 3 2 6 1 
4 5 3 6 1 2 
4 5 3 6 2 1 
4 5 6 1 2 3 
4 5 6 1 3 2 
4 5 6 2 1 3 
4 5 6 2 3 1 
4 5 6 3 1 2 
4 5 6 3 2 1 
4 6 1 2 3 5 
4 6 1 2 5 3 
4 6 1 3 2 5 
4 6 1 3 5 2 
4 6 1 5 2 3 
4 6 1 5 3 2 
4 6 2 1 3 5 
4 6 2 1 5 3 
4 6 2 3 1 5 
4 6 2 3 5 1 
4 6 2 5 1 3 
4 6 2 5 3 1 
4 6 3 1 2 5 
4 6 3 1 5 2 
4 6 3 2 1 5 
4 6 3 2 5 1 
4 6 3 5 1 2 
4 6 3 5 2 1 
4 6 5 1 2 3 
4 6 5 1 3 2 
4 6 5 2 1 3 
4 6 5 2 3 1 
4 6 5 3 1 2 
4 6 5 3 2 1 
5 1 2 3 4 6 
5 1 2 3 6 4 
5 1 2 4 3 6 
5 1 2 4 6 3 
5 1 2 6 3 4 
5 1 2 6 4 3 
5 1 3 2 4 6 
5 1 3 2 6 4 
5 1 3 4 2 6 
5 1 3 4 6 2 
5 1 3 6 2 4 
5 1 3 6 4 2 
5 1 4 2 3 6 
5 1 4 2 6 3 
5 1 4 3 2 6 
5 1 4 3 6 2 
5 1 4 6 2 3 
5 1 4 6 3 2 
5 1 6 2 3 4 
5 1 6 2 4 3 
5 1 6 3 2 4 
5 1 6 3 4 2 
5 1 6 4 2 3 
5 1 6 4 3 2 
5 2 1 3 4 6 
5 2 1 3 6 4 
5 2 1 4 3 6 
5 2 1 4 6 3 
5 2 1 6 3 4 
5 2 1 6 4 3 
5 2 3 1 4 6 
5 2 3 1 6 4 
5 2 3 4 1 6 
5 2 3 4 6 1 
5 2 3 6 1 4 
5 2 3 6 4 1 
5 2 4 1 3 6 
5 2 4 1 6 3 
5 2 4 3 1 6 
5 2 4 3 6 1 
5 2 4 6 1 3 
5 2 4 6 3 1 
5 2 6 1 3 4 
5 2 6 1 4 3 
5 2 6 3 1 4 
5 2 6 3 4 1 
5 2 6 4 1 3 
5 2 6 4 3 1 
5 3 1 2 4 6 
5 3 1 2 6 4 
5 3 1 4 2 6 
5 3 1 4 6 2 
5 3 1 6 2 4 
5 3 1 6 4 2 
5 3 2 1 4 6 
5 3 2 1 6 4 
5 3 2 4 1 6 
5 3 2 4 6 1 
5 3 2 6 1 4 
5 3 2 6 4 1 
5 3 4 1 2 6 
5 3 4 1 6 2 
5 3 4 2 1 6 
5 3 4 2 6 1 
5 3 4 6 1 2 
5 3 4 6 2 1 
5 3 6 1 2 4 
5 3 6 1 4 2 
5 3 6 2 1 4 
5 3 6 2 4 1 
5 3 6 4 1 2 
5 3 6 4 2 1 
5 4 1 2 3 6 
5 4 1 2 6 3 
5 4 1 3 2 6 
5 4 1 3 6 2 
5 4 1 6 2 3 
5 4 1 6 3 2 
5 4 2 1 3 6 
5 4 2 1 6 3 
5 4 2 3 1 6 
5 4 2 3 6 1 
5 4 2 6 1 3 
5 4 2 6 3 1 
5 4 3 1 2 6 
5 4 3 1 6 2 
5 4 3 2 1 6 
5 4 3 2 6 1 
5 4 3 6 1 2 
5 4 3 6 2 1 
5 4 6 1 2 3 
5 4 6 1 3 2 
5 4 6 2 1 3 
5 4 6 2 3 1 
5 4 6 3 1 2 
5 4 6 3 2 1 
5 6 1 2 3 4 
5 6 1 2 4 3 
5 6 1 3 2 4 
5 6 1 3 4 2 
5 6 1 4 2 3 
5 6 1 4 3 2 
5 6 2 1 3 4 
5 6 2 1 4 3 
5 6 2 3 1 4 
5 6 2 3 4 1 
5 6 2 4 1 3 
5 6 2 4 3 1 
5 6 3 1 2 4 
5 6 3 1 4 2 
5 6 3 2 1 4 
5 6 3 2 4 1 
5 6 3 4 1 2 
5 6 3 4 2 1 
5 6 4 1 2 3 
5 6 4 1 3 2 
5 6 4 2 1 3 
5 6 4 2 3 1 
5 6 4 3 1 2 
5 6 4 3 2 1 
6 1 2 3 4 5 
6 1 2 3 5 4 
6 1 2 4 3 5 
6 1 2 4 5 3 
6 1 2 5 3 4 
6 1 2 5 4 3 
6 1 3 2 4 5 
6 1 3 2 5 4 
6 1 3 4 2 5 
6 1 3 4 5 2 
6 1 3 5 2 4 
6 1 3 5 4 2 
6 1 4 2 3 5 
6 1 4 2 5 3 
6 1 4 3 2 5 
6 1 4 3 5 2 
6 1 4 5 2 3 
6 1 4 5 3 2 
6 1 5 2 3 4 
6 1 5 2 4 3 
6 1 5 3 2 4 
6 1 5 3 4 2 
6 1 5 4 2 3 
6 1 5 4 3 2 
6 2 1 3 4 5 
6 2 1 3 5 4 
6 2 1 4 3 5 
6 2 1 4 5 3 
6 2 1 5 3 4 
6 2 1 5 4 3 
6 2 3 1 4 5 
6 2 3 1 5 4 
6 2 3 4 1 5 
6 2 3 4 5 1 
6 2 3 5 1 4 
6 2 3 5 4 1 
6 2 4 1 3 5 
6 2 4 1 5 3 
6 2 4 3 1 5 
6 2 4 3 5 1 
6 2 4 5 1 3 
6 2 4 5 3 1 
6 2 5 1 3 4 
6 2 5 1 4 3 
6 2 5 3 1 4 
6 2 5 3 4 1 
6 2 5 4 1 3 
6 2 5 4 3 1 
6 3 1 2 4 5 
6 3 1 2 5 4 
6 3 1 4 2 5 
6 3 1 4 5 2 
6 3 1 5 2 4 
6 3 1 5 4 2 
6 3 2 1 4 5 
6 3 2 1 5 4 
6 3 2 4 1 5 
6 3 2 4 5 1 
6 3 2 5 1 4 
6 3 2 5 4 1 
6 3 4 1 2 5 
6 3 4 1 5 2 
6 3 4 2 1 5 
6 3 4 2 5 1 
6 3 4 5 1 2 
6 3 4 5 2 1 
6 3 5 1 2 4 
6 3 5 1 4 2 
6 3 5 2 1 4 
6 3 5 2 4 1 
6 3 5 4 1 2 
6 3 5 4 2 1 
6 4 1 2 3 5 
6 4 1 2 5 3 
6 4 1 3 2 5 
6 4 1 3 5 2 
6 4 1 5 2 3 
6 4 1 5 3 2 
6 4 2 1 3 5 
6 4 2 1 5 3 
6 4 2 3 1 5 
6 4 2 3 5 1 
6 4 2 5 1 3 
6 4 2 5 3 1 
6 4 3 1 2 5 
6 4 3 1 5 2 
6 4 3 2 1 5 
6 4 3 2 5 1 
6 4 3 5 1 2 
6 4 3 5 2 1 
6 4 5 1 2 3 
6 4 5 1 3 2 
6 4 5 2 1 3 
6 4 5 2 3 1 
6 4 5 3 1 2 
6 4 5 3 2 1 
6 5 1 2 3 4 
6 5 1 2 4 3 
6 5 1 3 2 4 
6 5 1 3 4 2 
6 5 1 4 2 3 
6 5 1 4 3 2 
6 5 2 1 3 4 
6 5 2 1 4 3 
6 5 2 3 1 4 
6 5 2 3 4 1 
6 5 2 4 1 3 
6 5 2 4 3 1 
6 5 3 1 2 4 
6 5 3 1 4 2 
6 5 3 2 1 4 
6 5 3 2 4 1 
6 5 3 4 1 2 
6 5 3 4 2 1 
6 5 4 1 2 3 
6 5 4 1 3 2 
6 5 4 2 1 3 
6 5 4 2 3 1 
6 5 4 3 1 2 
6 5 4 3 2 1 

 

prev_permutation의 기본 동작 방식

Example

    for(int i = 4; i >= 1; i--)
        num.push_back(i);
    do{
        for(int i = 0; i < num.size();i++){
            cout << num[i] << " ";
        }
        cout << endl;
    }while(prev_permutation(num.begin(),num.end()));
4 3 2 1 
4 3 1 2 
4 2 3 1 
4 2 1 3 
4 1 3 2 
4 1 2 3 

3 4 2 1  
3 4 1 2  
3 2 4 1  
3 2 1 4  
3 1 4 2  
3 1 2 4  

2 4 3 1  
2 4 1 3  
2 3 4 1  
2 3 1 4  
2 1 4 3  
2 1 3 4  

1 4 3 2  
1 4 2 3  
1 3 4 2  
1 3 2 4  
1 2 4 3  
1 2 3 4