Поиск количества комбинаций номера суммы (переменная n в коде). Например:
3 = 1 + 1 + 1 = 2 + 1 = 3 = > ANS равно 3
5 = 5 = 4 + 1 = 3 + 2 = 3 + 1 + 1 = 2 + 2 + 1 = 2 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1 = > ANS равно 7
В следующем примере m - максимальное число, а n
- сумма,
цель состоит в том, чтобы найти, сколько (суммы) комбинаций оно имеет.
Я просто хочу знать, почему p(n, m) = p(n, m - 1) + p(n - m, m)
?
Код здесь:
int p (int n, int m)
{
if (n == m)
return 1 + p(n, m - 1);
if (m == 0 || n < 0)
return 0;
if (n == 0 || m == 1)
return 1;
return p(n, m - 1) + p(n - m, m);
}
Оценил!