c++에서 next_permutation에 대해서 모르던 부분 추가.

next+permutation 을 활용해서 순열을 출력할때, 주로 do while 형태로 사용되는건 알겠는데, 맨 마지막까지 진행한 후에,

모든 과정을 거치고 for문으로 컨테이너의 각각의 항들을 찍어보면 다시 1,2,3 형태로 바뀌어 있어서 궁금해서 

따로 3 2 1 일때를 찍어보니까, 1 2 3 형태로 바뀌어 있었다. 

 

이런식으로 코드를 작성하고 돌려보니 알 수 있는 것은, next_permutation의 경우는 사전식 배열의 끝에 도달했을때 다시 처음으로 배열해버리고, 그럴 경우 false를 반환한다고 생각하면 될듯 하다. 

이렇게 되면 while문 맨 마지막에서 false를 반환하고, 어떤 식에서 내가 원하던 결과를 도출한건지 알수 없었던 상황이 이해가 된다. 

next_permutation은 하나 다음으로 변환시켜버리고 그리고 다음이 더 가능하냐 안하냐에 따라서 true or false를 반환한다고 기억하도록 하자. 사전식 배열의 맨 마지막에 도달하면 다음은 사전식 배열상 없으니까, 마지막 형태니까 false를 반환한다고 기억하도록 하자. 

 

  Comments,     Trackbacks