1. 순열이 주어졌을 때, 다음 순열(사전순으로 바로 다음에 오는 순열)을 구하는건 O(n)에 가능하다 ㅇㅅㅇ
이 방법으로 n!개를 모두 구하면 O(n*n!)이 걸리는데, 이게 느려보여도 사실 이것보다 복잡도를 내릴 수는 없어서 딱히 느린게 아니다 ㅋㅅㅋ 각 순열을 출력할 때 O(n)이 걸리니까 ㅇㅅㅇ;;
https://ideone.com/rihkAh
2. 사실 위의 알고리즘하고 비슷한데 순서가 빠진 것도 있다 ㅇㅅㅇ 내부적으로 상태를 가져서 투명한 함수는 아니지만 대신 연산 수는 더 적으므로 최소한 상수 배 만큼은 빠르겠지
다만 그렇다고 해도 출력이 병목을 먹어서 O(n*n!)인건 그대로일듯 하다 ㅇㅅㅇ;;
https://ideone.com/WzzmkX
않이 쉬벌;;;; C++에 퍼뮤테이션이 std에 있었어?
허...........
땔송합니다ㅠㅠ
순열 사전순 바로다음 순열은 O(1)아님?
순열재귀로 다뽑는건 o(n!)이지만
O(n)이야 ㅇㅅㅇ;;
왜 O(n)이야? 다음거는 앞에 항들 고정하고 i ,j만 바꿔주면되는데
케이스바이케이스 다른데 O(n)이라는 전체 경우에중에 n!순열 개개로 분할상환해서 O(n)이라는건가
설마 순열 1개 출력하는데 for문 한바퀴돍려야되서 그런건가
이전 순열을 읽어서 다음 순열을 구하는게 함수로 따로 떼져있어서 O(n)이야 ㅇㅅㅇ;; 재귀에서 중간중간 구해주면 그건 오버헤드가 없겠지
역시 카이스트는 뭔가 다르네 짤도 매번 바뀌는데 잘 쓰고 다니고
퍼뮤테이트가 순열 탐색임?