放蘋果 組合 DFS

2021-10-10 07:44:21 字數 715 閱讀 7872

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

對輸入的每組資料m和n,用一行輸出相應的k。

sample input

17 3

sample output

8

一道思維題 過程大致如下:

每一次深搜分為兩部分 一是所有盤中都要裝蘋果 二是至少有乙個盤中不裝蘋果 兩個過程所計算的方法數相加 就是裝蘋果的方法數

可能有人會在dfs(m, n - 1)疑惑 為什麼這是至少乙個盤中不裝蘋果的方法數。

因為這裡進入深搜的過程 每一次深入都會計算再多乙個空盤中的方法數 結合在一起就是有空盤子的方法數。

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn =

1e3+5;

intdfs

(int m,

int n)

intmain()

return0;

}

放蘋果(求組合數)

問題 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?注意 假如有3個盤子,那麼 5,1,1 和 1,5,1 與 1,1,5 都是同一種分法。這種求放物品的組合數問題,可以通過這樣的完備思路來構造遞迴公式 假設有n個盤子 那麼1 至少有乙個盤子不放蘋果 2 n個盤...

牛客網 放蘋果 DFS

牛客網 放蘋果 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。每行均包含二個整數m和n,以空格分開。1 m,n 10。對輸入的每組資料m和n,用一行輸出相應的k。示例1複製 17 3複製8 這是一道模板題,將m個物...

POJ 1664 放蘋果 DFS 遞迴

因為一瞬間腦子不太清楚,有個地方敲錯了,導致了這道水題花了我一些時間,其實很簡單.首先想到的是dfs,因為一直在做這個嘛.dfs 比較長,好不容易遇到一道容易題,我還剪了剪枝。這麼水的題,有點多此一舉啊 includeint m,n int total,num void dfs int remain...