Я ищу рекурсивный алгоритм для разбиения числа на k частей.Java Partition Algorithm
Для Exemple:
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} }
В Java, но это может быть другой языка сайта.
Мой код в настоящее время
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) принимают основные факторы. Шаг 2) применить биномиальную теорему. См. Также [этот ответ] (http://stackoverflow.com/a/6999554/2071828). –
У меня есть такой базовый алгоритм: public static void partition (int n, int k) { раздел (n, k, ""); } public static void partition (int n, int max, String prefix) { if (n == 0) { System.out.println (prefix); возвращение; } для (int i = Math.min (max, n); i> = 1; i--) { раздел (n-i, i, prefix + "" + i); } } – Shining