Дано число N
, печать в Сколькими способами он может быть представлен в видеКоличество способов разделить число
N = a + b + c + d
с
1 <= a <= b <= c <= d; 1 <= N <= M
Мое наблюдение:
For N = 4: Only 1 way - 1 + 1 + 1 + 1
For N = 5: Only 1 way - 1 + 1 + 1 + 2
For N = 6: 2 ways - 1 + 1 + 1 + 3
1 + 1 + 2 + 2
For N = 7: 3 ways - 1 + 1 + 1 + 4
1 + 1 + 2 + 3
1 + 2 + 2 + 2
For N = 8: 5 ways - 1 + 1 + 1 + 5
1 + 1 + 2 + 4
1 + 1 + 3 + 3
1 + 2 + 2 + 3
2 + 2 + 2 + 2
So I have reduced it to a DP solution as follows:
DP[4] = 1, DP[5] = 1;
for(int i = 6; i <= M; i++)
DP[i] = DP[i-1] + DP[i-2];
Верно ли мое наблюдение или я что-то упускаю. У меня нет тестовых случаев для запуска. Поэтому, пожалуйста, дайте мне знать, правильный подход или неправильный подход.
У меня есть вопрос в форме комментариев для вас, Питер, можете помочь? –
отправьте как отдельный вопрос ... –