먼저 몇 가지 정의가 있습니다.
- 주어진
n
andk
, 정렬 된 다중 집합 목록을 고려하십시오. 각 다중 집합에 대해 반복과 함께k
숫자를 선택 합니다{0, 1, ..., n-1}
.
예를 들어 for n=5
와 k=3
에는 다음이 있습니다.
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 1), ( 0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 2), (0, 2, 3), (0, 2, 4), (0, 3, 3), (0, 3, 4), (0, 4, 4), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4), (1, 2, 2), (1, 2, 3), (1, 2, 4), (1, 3, 3), (1, 3, 4), (1, 4, 4) , (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 3, 3), (2, 3, 4), (2, 4, 4), ( 3, 3, 3), (3, 3, 4), (3, 4, 4), (4, 4, 4)]
- 부분 부분에있는 모든 다중 집합의 교집합의 크기가 적어도 해당 부동산과 멀티 세트의 목록입니다
k-1
. 즉, 모든 다중 집합을 가져 와서 다중 집합 교차를 사용하여 한 번에 교차시킵니다. 예를 들어,[(1, 2, 2), (1, 2, 3), (1, 2, 4)]
교집합의 크기가 2 인 부분이지만[(1, 1, 3),(1, 2, 3),(1, 2, 4)]
교집합의 크기가 1이기 때문에 그렇지 않습니다.
직무
코드는 두 개의 인수를해야 n
하고 k
. 그런 다음이 멀티 세트를 정렬 된 순서로 탐욕스럽게 통과하고 목록의 일부를 출력해야합니다. 이 경우 n=5, k=3
올바른 파티셔닝은 다음과 같습니다.
(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4)
(0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4)
(0, 2, 2), (0, 2, 3), (0, 2, 4)
(0, 3, 3), (0, 3, 4)
(0, 4, 4)
(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4)
(1, 2, 2), (1, 2, 3), (1, 2, 4)
(1, 3, 3), (1, 3, 4)
(1, 4, 4)
(2, 2, 2), (2, 2, 3), (2, 2, 4)
(2, 3, 3), (2, 3, 4)
(2, 4, 4)
(3, 3, 3), (3, 3, 4)
(3, 4, 4), (4, 4, 4)
에 대한 또 다른 예는 다음과 같습니다 n = 4, k = 4
.
(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 0, 3)
(0, 0, 1, 1), (0, 0, 1, 2), (0, 0, 1, 3)
(0, 0, 2, 2), (0, 0, 2, 3)
(0, 0, 3, 3)
(0, 1, 1, 1), (0, 1, 1, 2), (0, 1, 1, 3)
(0, 1, 2, 2), (0, 1, 2, 3)
(0, 1, 3, 3)
(0, 2, 2, 2), (0, 2, 2, 3)
(0, 2, 3, 3), (0, 3, 3, 3)
(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3)
(1, 1, 2, 2), (1, 1, 2, 3)
(1, 1, 3, 3)
(1, 2, 2, 2), (1, 2, 2, 3)
(1, 2, 3, 3), (1, 3, 3, 3)
(2, 2, 2, 2), (2, 2, 2, 3)
(2, 2, 3, 3), (2, 3, 3, 3)
(3, 3, 3, 3)
욕심의 의미에 대한 설명 : 각 다중 집합에 대해 기존 부분에 추가 할 수 있는지 확인합니다. 가능하다면 추가 할 수 있습니다. 그것이 우리가 새로운 부분을 시작할 수 없다면. 우리는 위에서 주어진 예제에서와 같이 멀티 세트를 정렬 된 순서로 봅니다.
산출
원하는 형식으로 분할을 출력 할 수 있습니다. 그러나 멀티 세트는 한 줄에 가로로 써야합니다. 즉, 개별 다중 집합을 세로로 쓰거나 여러 줄에 걸쳐서는 안됩니다. 출력에서 부품 표현을 분리하는 방법을 선택할 수 있습니다.
가정
우리는 그것을 가정 할 수 있습니다 n >= k > 0
.
(0, 4, 4)
그 자체입니까? 당신의 설명을 감안할 때, 나는 그 "부분"이 될 것이라고 생각합니다 (0, 4, 4), (1, 4, 4), (2, 4, 4), (3, 4, 4), (4, 4, 4)
. (0, 0, 3, 3)
두 번째 테스트 사례와 유사합니다 .