各グループの要素の合計が A になるように、N 個の整数の異なる順序付きグループの数を計算したい
例: N = 3 で A = 3 の場合、結果は 10 になります。
1 = [3, 0, 0]
2 = [2, 1, 0]
3 = [1, 2, 0]
4 = [0, 3 , 0]
5 = [2, 0, 1]
6 = [1, 1, 1]
7 = [0, 2, 1]
8 = [1, 0, 2]
9 = [0, 1, 2]
10 = [0, 0, 3]
私がやった方法は力ずくでした:
public static int calc(int a, int n){
if (n <= 1 || a == 0) return 1;
int sum = 0;
for (int i=0; i<=n; i++)
sum += calc(a - i, n - 1);
return sum;
}
もっと良い方法があると思います(私が見逃しているいくつかの数学的計算..)はありますか?
編集 元の質問では、順序を考慮するのを忘れていました