8! = 40320이니까
next_permutation 같은 함수를 써서 1 2 3 4 5가 몇 번째인지를 check 해 준다면 되겠죠.
map = function (대응) 이라고 생각하면
{1, 2, 3, 4, 5} = 0
{1, 2, 3, 5, 4} = 1
...
이런 식으로 대응시켜 놓고. 관리하시면 됩니다. 40320 << 9 * 10^7이니까 메모리 절약이 되겠죠.
저는 귀찮아서. 그냥 Queue 안에 넣는 item 안에다가 배열까지 선언했는데요.
조금의 귀찮은 코딩을 더 하신다면 2k 안쪽으로 들어오시지 않을까 싶네요.
juhongkim2 6년 전