GDUFE ACM-1009

递推题目系列之三放苹果

Time Limit: 2000/1000ms (Java/Others)

Problem 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:

2
8 6
7 3

Sample Output:

20
8思路:

当n>m:则必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即 if(n>m) f(m,n) = f(m,m)

当n <= m:不同的放法可以分成两类:含有0的方案数,不含有0的方案数

1、含有0的方案数,即有至少一个盘子空着,即相当于 f(m,n)=f(m,n-1);

2、不含有0的方案数,即所有的盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即 f(m,n)=f(m-n,n).而总的放苹果的放法数目等于两者的和,即 f(m,n)=f(m,n-1)+f(m-n,n)

递归出口条件说明:

当n==1时,所有苹果都必须放在一个盘子里,所以返回1;

当m==0(没有苹果可放)时,定义为1种放法;

递归:

1 int fun(int m, int n) //m个苹果放在n个盘子中共有几种方法
2 {
3     if(m==0 || n==1)
4         return 1;
5     if(n>m)
6         return fun(m,m);
7     else
8         return fun(m,n-1)+fun(m-n,n);
9 }
AC代码:
 1 #include<stdio.h>
 2 int f(int m,int n)
 3 {
 4     if(m==0)
 5         return 1;
 6     if(n==1)
 7         return 1;
 8     if(n>m)
 9         return f(m,m);
10     if(n<=m)
11         return f(m,n-1)+f(m-n,n);
12 }
13 int main()
14 {
15     int t,m,n;
16     scanf("%d",&t);
17     while(t--)
18     {
19         scanf("%d%d",&m,&n);
20         printf("%d\n",f(m,n));
21     }
22     return 0;
23 }
时间: 2024-10-29 19:12:28

GDUFE ACM-1009的相关文章

HDU ACM 1009 FatMouse&#39; Trade

分析:贪心,每次优先取需要食物的重量和猫食的重量相比最大的,所以先要按比值进行排序,注意J[i]和B[i]要声明为实型,声明为整形就挂了. #include<iostream> #include<algorithm> using namespace std; struct FAT { double f,j; double avg; } fat[1005]; bool cmp(FAT a,FAT b) { if(a.avg<b.avg) return true; else re

2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp

QSC and Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 859    Accepted Submission(s): 325 Problem Description Every school has some legends, Northeastern University is the same. Enter

武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)例题4.18

Problem Description 验证哥德巴赫猜想:任何充分大(>=4)的偶数都可以用两个素数之和表示. Input 输入一个偶数n.(2<n<=10000) Output 找到a.b使得 n=a+b 其中a.b为两个素数,且a<=b. Sample Input 4 100 Sample Output 2 2 3 97 1 #include <iostream> 2 3 #include<math.h> 4 5 using namespace std;

武汉科技大学ACM :1009: 零起点学算法63——弓型矩阵

Problem Description 输出n*m的弓型矩阵 Input 多组测试数据 每组输入2个整数 n和m(不大于20) Output 输出n*m的弓型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右) Sample Input 4 3 Sample Output 1 2 3 6 5 4 7 8 9 12 11 10 我的代码: 1 #include<iostream> 2 #include <iomanip> 3 using namespace std; 4 5 int

http://acm.gdufe.edu.cn/Problem/read/id/1007

递推题目系列之一涂色问题 Time Limit: 2000/1000ms (Java/Others) Problem Description 有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. Input: 输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50). Output: 对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行.

武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)习题5.12

Problem Description 这天老师照例给小豪出了一道题目:老师给小豪一个字符串,让小豪将该字符串逆序输出. Input 第一行包括一个T,表示有多少组测试数据: 接下来T行,每行包括一个字符串(长度不超过65535). Output 对于每个测试数据输出它的逆序字符串. Sample Input 1 oaHoaiX evoL I Sample Output I Love XiaoHao 1 #include<stdio.h> 2 #include <string.h>

HDU 5335(2015 ACM多校训练第四场1009)

Walk Out Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2469    Accepted Submission(s): 485 Problem Description In an n?m maze, the right-bottom corner is the exit (position (n,m) is the exit)

华东交通大学2017年ACM“双基”程序设计竞赛 1009

Problem Description MDD随机生成了n(n<le5)个随机数x(x<=1e9),这n个随机数排成一个序列,MDD有q(q<=le5)个询问,每个询问给你一个a,问你这个序列中有多少个区间的最大公约数不为a Input 第一行输入一个T,表示T组测试样例每组样例包含一个n,表示n个随机数再输入一个Q,表示Q个询问每个询问输入一个a Output 每个询问输出有多少个区间的gcd不为a Sample Input 1 5 1 2 4 4 1 4 1 2 3 4 Sample

ACM多校联赛7 2018 Multi-University Training Contest 7 1009 Tree

[题意概述] 给一棵以1为根的树,树上的每个节点有一个ai值,代表它可以传送到自己的ai倍祖先,如果不存在则传送出这棵树.现在询问某个节点传送出这棵树需要多少步. [题解] 其实是把"弹飞绵羊"那道题从序列上搬到了树上,解法其实类似. 我们可以用LCT维护传送的关系,若点i存在ai倍祖先,那么就把他们link起来,否则就把i与特殊节点n+1给link起来. 询问某个点要传送多少次时,就是询问这个点到n+1有多远,我们在LCT上取出这一段,查询size即可. 1 #include<

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY