-5
k 부분의 숫자를 분할하는 재귀 알고리즘을 찾고 있습니다. exemple 들어Java Partition Algorithm
: 자바에서
P(5,2) > { {1,4},{2,3} }
P(7,2) > { {1,6},{2,5},{3,4} }
P(5,3) > { {1,1,3},{1,2,2} }
하지만 다른 langage 수 있습니다.
내 코드는 현재 내가 알고있는 것처럼
public static void partition(int n, int k) {
partition(n, k, " ");
}
public static void partition(int n, int max, String prefix) {
if (n == 0) {
System.out.println(prefix);
return;
}
for (int i = Math.min(max, n); i >= 1; i--) {
partition(n-i, i, prefix + " " + i);
}
}
그리고 지금까지 어떤 시도를하셨습니까? – nullpointer
1 단계) 1 차 요인을 취하십시오. 2 단계) 이항 정리를 적용합니다. [이 답변] (http://stackoverflow.com/a/6999554/2071828)도 참조하십시오. –
나는 다음과 같은 기본적인 알고리즘을 가지고있다. public static void partition (int n, int k) { partition (n, k, ""); } public static void partition (int n, int max, String prefix) { if (n == 0) { System.out.println (접두어); 반환; } (int i = Math.min (max, n); i> = 1; i--) { partition (n-i, i, prefix + ""+ i); } } – Shining