計蒜客 劃分整數(dp)

2021-08-17 20:15:24 字數 1273 閱讀 4132

劃分整數

蒜頭君特別喜歡數學。今天,蒜頭君突發奇想:如果想要把乙個正整數 nn

n 分解成不多於 kk

k 個正整數相加的形式,那麼一共有多少種分解的方式呢?

蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。

共一行,包含兩個整數 n(1≤n≤300)n(1 \leq n \leq 300)n(

1≤n≤

300)

和 k(1≤k≤300)k(1 \leq k \leq 300)k(

1≤k≤

300)

,含義如題意所示。

乙個數字,代表所求的方案數。

樣例輸入

5 3
樣例輸出

5
可設dp[n][k]表示將正整數n分解為不多於k個正整數相加的形式的方案數。根據題意,應分以下4種情況討論:

1°n=1 或 k=1:n=1時只有"1=1"這1種分解方案;k=1時只有"n=n"這1種分解方案,故方案數=1;

2°n3°n>k:根據"是否將n恰好分解為k個正整數相加的形式"(上界),進行討論:

1°°將n恰好分解為k個正整數相加的形式:此時分解出的每個正整數t都滿足t>=1,故相當於將分解出的k個數"都減去1",即相當於dp[n-k][k],也就是將正整數n-k分解為不多於k個正整數相加的形式的方案數;

2°°將n分解為小於k個正整數相加的形式:此時即dp[n][k-1],也就是將正整數n分解為不多於k-1個正整數相加的形式的方案數;

故方案數=dp[n-k][k]+dp[n][k-1];

4°n=k:總體與3°相同,但將n恰好分解為k個正整數相加的形式時,只有"n=n/k+n/k+...+n/k"這1種分解方案,故方案數=1+dp[n][k-1]。

綜上,可得以下結論:

計蒜客 基礎dp 劃分整數

蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 n 分解成不多於 k 個正整數相加的形式,那麼一共有多少種分解的方式呢 蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。共一行,包含兩個整數 n 1 n 300 和 k 1 k 300 含義如題意所示。乙個數字,代表所求的方案數。樣...

計蒜客 劃分整數(動態規劃)

劃分整數 蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 nnn 分解成不多於 kkk 個正整數相加的形式,那麼一共有多少種分解的方式呢?蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。輸入格式 共一行,包含兩個整數 n 1 n 300 n 1 leq n leq 300 n 1...

計蒜客 A1634 劃分整數

標籤 計數dp 相似題目 題目蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 n 分解成不多於 k 個正整數相加的形式,那麼一共有多少種分解的方式呢?蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。輸入共一行,包含兩個整數n 1 n 300 和k 1 k 300 含義如題意所示。...