思路:遞迴
這道題有點像放蘋果:
把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分發(5,1,1和1,1,5是同一種方法)
轉化一下就有:
把n個蘋果放在k個盤子裡,每個盤子都不空.
那麼這樣就好理解,可以先把每乙個盤子都放上蘋果,注意是每乙個盤子,所以開始遞迴時從(n - k)開始,盤子數還是k;
接下來就是遞迴裡面了
1.如果蘋果為0,那麼就返回1,就算上一次的方案完成,有了1個方案;
2.如果只有乙個盤子了,那麼肯定把剩下所有的都放進去,所有又1個方案;
3.如果沒盤子了那還放個** , 只能返回0;
4.如果蘋果還沒盤子多,其餘的盤子就可以直接砸了不放了,盤子遞迴蘋果 數就ok了;
5.如果以上都不滿足那麼就可以考慮兩種遞迴:
a.少乙個盤子,蘋果數不變
b.所有盤子都放乙個,盤子數不變,蘋果減少
獻上**
#include using namespace std;
int n , k;
int g(int x , int y)
int main()
洛谷 P1025 數的劃分
題目描述 將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入輸出格式 輸入格式 n,k 6 n 200,2 k 6 輸出格式 乙個整數,即不同的分法。輸入輸出樣例 輸入樣例...
洛谷P1025 數的劃分
將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 7 3 輸出樣例 1 4 四種分法為 1,1,5 1,2...
洛谷P1025 數的劃分
將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 複製7 3 輸出樣例 1 複製4 四種分法為 1,1,5...