-5
私は、k個の部分で数値を分割するための再帰アルゴリズムを探しています。 exempleについてはJava Partition Algorithm
:Javaでは
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} }
が、それは別の関連リンク言語することができます。
私のコードは、現在、私が理解したよう
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)2項定理を適用する。 [この回答](http://stackoverflow.com/a/6999554/2071828)も参照してください。 –
私はそのような基本的なアルゴリズムを持っています: パブリック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(接頭辞); リターン; (max、n); i> = 1; i--){ partition(n-i、i、prefix + "" + i); } } – Shining