[洛谷]P2386 放苹果 (#搜索)

题目描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)

输入输出格式

输入格式:

第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开。1<=M,N<=10

输出格式:

对输入的每组数据M和N,用一行输出相应的K。

输入输出样例

输入样例#1

1
7 3

输出样例#1

8

输入样例#2

3
3 2
4 3
2 7

输出样例#2

2
4
2

思路

看到这题突然不理解递归了......

对于每个苹果和盘子,首先都知道如果只有0或1个苹果,怎么放都只有一种方案。并且只有一个盘子的时候也只有1个方案。

#include 
#include 
using namespace std;
int n,m,s,t;
int dfs(int m,int n)//递归 
{
	if(m==0 || m==1 || n==1) return 1;//如果<=1个苹果,或者盘子只有一个,那么都是只有1种放法的 
	if(m>t;
	while(t--)
	{
		cin>>m>>n;//m个苹果n个盘子 
		cout<

 

你可能感兴趣的:(洛谷原创,搜索----dfs/bfs,搜索)