Я хочу рассчитать количество разных упорядоченных групп из N целых чисел, так что элементы каждой группы суммируются до A
Например: если 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;
}
Я подозреваю, что может быть лучший способ (какой-то математический расчет, который мне не хватает..) есть?
ИЗМЕНИТЬ В исходном вопросе я забыл принять во внимание порядок