問題 A 例題1 數的劃分

2021-09-24 23:19:17 字數 742 閱讀 7120

題目描述

將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同(不考慮順序)。

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

1 1 5

1 5 1

5 1 1

問有多少種不同的分法。

輸入n,k (6輸出

乙個整數,即不同的分法

樣例輸入

7 3樣例輸出

4題目型別:dfs,求分發的種類

思路:這是一道深搜的剪枝題,題目需要我們找出將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同(不考慮順序),顯然我們可以將每乙份排序一下,只需按次序遞減就可以得到不同的分法,例如:

1 1 5

1 2 4

1 3 3

2 2 3

第乙個到3後,由於如果繼續往上公升,會發現無法得到遞增的數列

**:

#includeusing namespace std;

int ans;

int n,k;

void dfs(int now,int sum,int num)

//now代表現在所遍歷的數,sum表示已經加上的數之和,num表示已經加上的數的個數

return;

}for(int i=now;sum+i*(k-num)<=n;i++)

//當i加到剩下的和(n-sum)不足以恰好分配到剩下的個數(k-num)中剪掉

}int main()

1440 例題1 數的劃分 dfs剪枝

1440 例題1 數的劃分 時間限制 1000 ms 記憶體限制 65536 kb 提交數 1607 通過數 1059 題目描述 將整數n分成k份,且每份不能為空,任意兩份不能相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。問有多少種不同的分法。輸出乙個整數,即不同的分法。輸入 ...

數的劃分問題 DP

問題 把乙個整數n分成k份,每份都不為0,有幾種分法?分析 情況分為兩類 一 每份中不包含1的方法,為保證每份 2,先拿出k個1到每乙份,然後把剩下的n k分為k份,分法有dp n k k 二 至少有乙份包含1,拿出1個當為乙份。剩下的n 1個分為k 1份,分法有dp n 1 k 1 include...

集合劃分問題(貝爾數)

time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description n個元素的集合可以劃分若干個非空子集。例如,當n 4時,集合可以劃分為15個不同的非空子集如下 給定正整數n 1 n 20...