暴力放苹果

放苹果

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 27339   Accepted: 17355

Description

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

Input

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

Output

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

Sample Input

1
7 3

Sample Output

8

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <math.h>
 5 #include <string.h>
 6 using namespace std;
 7 typedef long long ll;
 8 int n,m,cou,a[100];
 9 void dfs(int k,int nn,int mm)///解法1
10 {
11     //printf("%d--",cou);
12     if(mm>m) return ;
13     if(nn==0)
14     {
15         if(mm<=m)
16         {
17             cou++;
18         }
19         return;
20     }
21     for(int i=k; i<=nn; i++)///第i个数不小于第i-1个数,这样不会造成重复。
22     {///如果是从1一直到nn,那么就会生成所有的排列情况,会有重复。
23         dfs(i,nn-i,mm+1);
24     }
25 }
26 int f(int nn,int mm)///解法2
27 {///整数划分
28     ///所谓n关于m的划分,就是n分成任意个非负数部分,但是每一个部分都不超过m
29     ///两种情况: 1 至少存在一个m,相当与n-m后再进行m的划分。
30     ///          2  不存在m,也就是n关于转化成m-1的划分。
31     if(nn<0) return 0;
32     if(nn==1||mm==1) return 1;
33     return f(nn-mm,mm)+f(nn,mm-1);
34 }
35 int main()
36 {
37     int t;
38     scanf("%d",&t);
39     while(t--)
40     {
41         scanf("%d%d",&n,&m);
42         /*{cou=0;
43         dfs(1,n,0);
44         printf("%d\n",cou);}*/
45             printf("%d\n",f(n,m));
46     }
47     return 0;
48 }

时间: 2024-10-29 03:05:12

暴力放苹果的相关文章

放苹果(暴力)

放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33214   Accepted: 20600 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output 对

洛谷 P2386 放苹果

P2386 放苹果 题目背景 (poj1664) 题目描述 把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: 复制 1 7

【递归】放苹果

问题 : [递归]放苹果 题目描述 楚继光刚把油拿到厨房,老妈又大声喊道:“快去把苹果洗了放到盘子里去.” 楚继光要把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5.1.1和1.5.1 是同一种分法. 输入 第1行为一个整数,表示测试数据的数目(测试数据的数目t(0 ≤ t ≤20),第2行为M和N(M和N,以空格分开.1≤M,N≤10). 输出 输出有多少种不同分法. 样例输入 1 7 3 样例输出 8 #include <iostream>

oj放苹果

题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m<=10,1<=n<=10.<=n<=10<=m<=10 样例输入 7 3 样例输出 8 分析: 假设对于m个苹果,n个盘子共有apple(m,n)种方法,那么要想办法递归将m,n的值减小,首先设置递归条件,当m<=1或者n<=1时,apple(m,n)=1:

放苹果

描述 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m<=10,1<=n<=10.<=n<=10<=m<=10 样例输入 7 3 样例输出 8 /** * 计算放苹果方法数目 * 输入值非法时返回-1 * 1 <= m,n <= 10<><= m,n <= 10<> * @

poj 1664 放苹果 递归

题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个盒子. (1):假设当前最少的盒子放置一个苹果,则给m个盒子分别放一个苹果,剩下n-m个苹果. (2):假设当前最少的盒子不放苹果,则剩m-1个box,n个苹果. 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <c

放苹果系列

苹果是否相同(n个苹果) 袋子是否相同(m个袋子) 答案 是 是  DP(详见放苹果) 是 否   否 是  m^n/m! 否 否  m^n

放苹果问题

Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output 对输入的每组数据M和N,用一行输出相应的K. Sample Input 1 7 3 Sample Output 8 Source [email protected] 解题思路:笔者

放苹果(递归)

Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output 对输入的每组数据M和N,用一行输出相应的K. Sample Input 1 7 3 Sample Output 8 代码: #include <iostream> #i