P1025 數的劃分

2022-05-05 20:03:08 字數 826 閱讀 9257

題目描述

將整數 nn 分成 kk 份,且每份不能為空,任意兩個方案不相同(不考慮順序)。

例如: n=7n=7 , k=3k=3 ,下面三種分法被認為是相同的。

1,1,51,1,5 ;

1,5,11,5,1 ;

5,1,15,1,1 .

問有多少種不同的分法。

輸入輸出格式

輸入格式:

n,k ( 6輸出格式:

1個整數,即不同的分法。

很久沒寫 \(dfs\) 了, 回來複習一下

\(dfs\) + 剪枝解決即可, 剪枝不用多說, 大於合成值直接不下一層即可, 注意列舉的新的分值是單調遞增的, 乙個不符合就直接 \(break\) 即可

還有一點比較巧妙的是 \(dfs\) 順序, 本題中要求合成數不重複, 我們利用列舉的數單調遞增來解決容斥的問題就好: 在每一層 \(dfs\) 裡記錄上一層選的大小, 列舉時從那個值開始, 便能保證遞增

#include#include#include#include#include#define ll long long

using namespace std;

int rd()

while(c >= '0' && c <= '9')

return flag * out;

}int num, k;

ll ans;

void dfs(int left, int now, int last)

for(int i = last;i <= num;i++)

}int main()

P1025 數的劃分

將整數nn分成kk份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7n 7,k 3k 3,下面三種分法被認為是相同的。1,1,51,1,5 1,5,11,5,1 5,1,15,1,1.問有多少種不同的分法。輸入格式 n,kn,k 6輸出格式 11個整數,即不同的分法。include d...

P1025 數的劃分

展開 將整數nn分成kk份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7n 7,k 3k 3,下面三種分法被認為是相同的。1,1,51,1,5 1,5,11,5,1 5,1,15,1,1.問有多少種不同的分法。n,kn,k 611個整數,即不同的分法。四種分法為 1,1,51,1,5...

P1025 數的劃分

題目描述 將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6輸出格式 1個整數,即不同的分法。輸入輸出樣例 輸入 1 7 3 輸出 1 說明 提示 四種分法...