문제를 풀다보면 종종 순열, 조합, 중복순열, 중복조합을 이용하는 경우가 있다. 이번 포스팅에서는 각각의 정의와 c++로 구현하는 방법에 대해 정리해보았다. 1. 순열 : 순서를 따지고, 중복을 허용하지 않는다. 중복을 허용하지 않기 때문에, 중복을 검사하는 visitied 처리가 필요하다. depth로 r만큼의 길이를 출력해준다. 그렇지 않다면 중복을 검사한 후, 재귀로 함수를 부른다. depth가 r이 될때, 순열이 완성된 것이므로, 순열을 출력해주고 backtracking해준다. backtracking을 수행한 뒤, check[i] = false로 다음 루프에서 해당 숫자를 사용할 수 있게 한다. 그렇지 않으면, 한번 사용된 숫자는 계속 사용중으로 표시가 되어, 그 숫자가 다른 가능한 순열 위치에서..