m个苹果放在n个盘子里面有多少种放法?(动态规划) 实现代码如下: #include <iostream> using namespace std; int s(int m ,int n) { if(m==0||n==1){ return 1; } if(m<n) { return s(m,m); } if(m>=n) { return s(m, n - 1) + s(m - n, n); } return 0; } int main() { int m,n; while(cin&…
题目 m个苹果放在n个盘子中有多少种结果,前置条件: 允许存在空盘 重复的摆放结果忽略不计 根据题意,也就是有3种情况,的确完全重复的摆放方式是没多大意义的 思路 这题可以用枚举的描述方式进行尾递归求解: 情况一: 存在一个空盘,甚至没有苹果或一个苹果,直接返回 1 情况二: 连盘子或苹果都没有,直接返 0 情况三: 可能有n个盘子只摆放了一个苹果,m-n的摆放占位,剩下的苹果任意摆放 情况四: 可能n个盘子为空,n-1,减去这空盘,剩下的m个苹果随意放置 btw,存在一个以上的空盘摆放方式与图…
package com.study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * * @author acer * @date 2014-09-15 * * m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法 * * 思路解析: * step1:每个筐里先放一个苹果,剩余m-n个苹果 * step2:m-n个苹果最多放在m-n个…
详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明··· http://www.cnblogs.com/celia01/archive/2012/02/19/2358673.html 不赘述:这里的代码是递归,记忆化搜索,避免重复计算某些数的值``` #include <cstdio> #include <cstring> #define N 50 int d[N][N]; int dfs(int x,int y)//x个苹果放入y个盘…
http://poj.org/problem?id=1664 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…
0.展示PTA总分 1.本章学习内容总结 1.1学习内容总结 数组查找: 1.遍历法查找:从头遍历数组找对应数据. 2.二分法查找:适用于按顺序排列的整形数组. 插入数据: 先找到该数据,对数组进行移动操作后插入. 删除数据: 1.找到,数组移动 2.定义新数组 数组排序: 1.选择法排序,两两比较进行交换,重复至多(N-1)!次 2.冒泡法排序,两两比较选出最值进行排序,重复至多(N-1)!次 1.2本章学习体会: 越不努力就越不适合努力.学到指针,各种数组,尤其和矩阵的关系非常开心. 代码量…
题目相关 题目描述 把 m个同样的苹果放在 n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法.(5,1,1 和 1,1,5 是同一种方法) 输入格式 第一行是测试数据的数目 t,以下每行均包括二个整数 m和 n,以空格分开. 输出格式 对输入的每组数据 m和 n,用一行输出相应的结果. 输入输出样例 输入1 1 7 3 输出 1 8 输入 2 3 3 2 4 3 2 7 输出 2 2 4 2 说明/提示 对于所有数据,保证:\(1\leq m,n\leq 10,0 \leq t \…
题意:有n个正方体,边长为A[i] 当A[k]-A[p]<=lim 时 k可以放在p上面, 问有多少种放法: 一开始被数据范围吓到了 ,以为是n^3算法,答案是nlogn 从小到大排序,一个一个插入,因为从小到大,所以插入一个元素时,只要管插入位置前面的元素大小关系,不用管后面的(相减一定<=0) 直接乘法原理即可 (1+k1)(1+k2).....k1即排序后 ,K[i]表示排序后 前面与A[i]相减小于lim的元素个数 #include <cstdio> #include &l…
题目描述     YK新买了2n+1本相同的书,准备放在家里的3层书架上(每一层放书的数量>=0且<=n).不过YK摆放他的书有些特殊的要求,即任意两层摆放的书的数目之和,严格大于另一层的书的数目.现在YK想知道在满足他的要求的前提下有多少种不同的摆书方法. 输入 输入有多行,每行一个整数n(1<=n<1e9),其含义如题目描述中所述 输出 对于每行输入,输出一行答案. 样例输入 1 2 样例输出 1 3题意描述:输入一个整数n(1<=n<1e9)计算并输出2n+1本书…
m个相同的苹果,放在n个相同的盘子中,由于相同,使用排列组合的方法不好处理.这个问题困扰了我很久 最后由大神“或缺”给出了答案: 以8个苹果放在3个盘子中为例 思路: 8苹果3盘子 =8苹果2盘子+5苹果2盘子(每盘已经放入1个)+2苹果2盘子(每盘已经放入3个) =(8苹果1盘子+6苹果1盘子(每盘已经放入1个))+ (3苹果1盘子(每盘已经放入1个)+1苹果1盘子)(每盘已经放入1个)+(1苹果1盘子(每盘已经放入1个)+1苹果1盘子)(每盘已经放入3个) ... =5+3+2 =10 编程…
这个问题,看似是一个简单的排列组合问题,但是加上不同的限制条件,会演变成不同的问题,感觉很奇妙,就总结一下列举下来 问题一 问题描述:把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问有多少种不同的分法?(注:5,1,1和1,1,5是同一种分法) 解题分析: 设f(m,n)为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>m:则必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响.即 if(n>m) f(m,n) = f(m,m) 当n <= m:不同的放法…
一,题意: M个苹果放在N个盘子里,允许有盘子空着,问共有多少种不同的分法. 二,思路: 递归的思想求解: 1,有反复执行的过程(调用本身) 第一种情况n>m : 必定有 n-m 个盘子空着,去掉不影响. 第二种情况n<=m : i,有至少一个盘子空着; ii,每个盘子都有苹果; 总的放苹果的方法数为两者之和: 2,有跳出反复执行过程的条件(递归出口) 当苹果放完或者只有一个盘子的时候 *递归两条路: i,n会逐渐减少,最终到达出口 n==1 : ii,m逐渐减少,因为n>m时,retu…
666:放苹果 总时间限制:  1000ms     内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. 输出 对输入的每组数据M和N,用一行输出相应的K. 样例输入 1 7 3 样例输出 8 分析: 放苹果,仔细看,恩递推,再仔细看,好像…
题目描述: 输入m,n,分别表示苹果数与盘子的总数,要求输出苹果放在n个盘子的方法总数(注意511和151是一种情况),例如输入 7 3 输出8((7),(6,1),(5,2),(4,3),(5,1,1),(4,2,1),(3,3,1),(3,2,2)) 思路: 最典型的解法整数分解,例如给定n个苹果,把苹果放到k个盘子里,允许有的盘子为空,不妨设 f(n , k ) (边缘条件为当 n = 0 ,1时,返回1,当 k = 1 时,返回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 分析: 假设对于m个苹果,n个盘子共有apple(m,n)种方法,那么要想办法递归将m,n的值减小,首先设置递归条件,当m<=1或者n<=1时,apple(m,n)=1:…
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=1664 ---------------------------------------------------------------------------------------------------------------------------------------------------------- 欢…
4:放苹果 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. 输出 对输入的每组数据M和N,用一行输出相应的K. 样例输入 1 7 3 样例输出 8 找递推关系:设f(m,n)表示m…
题目链接:http://poj.org/problem?id=1664       把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.   解题思路: 设f(m,n)为把m个苹果放到n个盘子中的方法数,m>=0,n>=0. 若m和n中任何一个等于0,那么f(m,n) = 1,注意不是等于0,因为相当于就那么一种结果,就是不往盘子里面放(没有苹果),或者,连盘子都没有.若n=1,显然对于任意的m>=0 有f…
首先我们想象有一个函数count  f(m,n)可以把m个苹果放到n个盘子中. 根据 n 和 m 的关系可以进一步分析: 特殊的m <=1|| n <= 1时只有一种方法: 当 m < n时,即使苹果每个盘子放一个也没法放满所有盘子,题目允许有的盘子空着不放,所以我们可以将空盘子去掉,即 f ( m , n ) = f ( m , m ): 当 m >= n时,这时候有两种情况: n 个盘子中有一个空盘子,当有空盘子时,f ( m , n ) = f ( m , n - 1 ):…
ti放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24392   Accepted: 15513 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output…
poj1664放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33661   Accepted: 20824 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. O…
题目: http://poj.org/problem?id=1664 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…
这篇博客可能字数比较多,而且很难讲清楚,我会努力给你们讲清楚: 首先,放苹果是一道DP,之所以难,是因为很难想到,我的确有同学用三维数组做出来,然而三维的的确比二维好理解,但三维复杂度太高,虽然DP一般数据都给的不大,但复杂度低的算法才是好算法,所以接下来我会给讲一个二维的放苹果的思路: 首先,我们用f[i][j]来代表i个苹果放在j个盘子里,然后就可以推知当i=1或i=0或j=1时f[i][j]=1: 当然,这是必然的: 那么对于复杂的f[i][j]我们可以推知:当盘子数大于苹果数的时候,一定…
放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37377   Accepted: 23016 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output 对…
链接:传送门 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n 和 m 的关系可以进一步分析: 特殊的 n = 1 || m = 1 || n = 0 时只有一种方法 当 m < n时,即使苹果每个盘子放一个也没法放满所有盘子,题目允许有的盘子空着不放,所以我们可以将空盘子去掉,即 f ( m , n ) = f ( m , m ) 当 m >= n时,这时候有两种情况: n 个盘子中有一个空盘子,当有空盘子时,f…
Description 题库链接 把 \(n\) 个同样的苹果放在 \(m\) 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发.多测,数据组数 \(t\). \(1\leq m,n\leq 10, 1\leq t\leq 20\) Solution 康复训练 \(\times 3\). 下午给学弟讲课时发现了这样一道题...数据完全可以出到 \(O(n^2)\) .当然原题的意思是要用搜索做... 我们记 \(f_{i,j}\) 为 \(i\) 个苹果放在 \(j\) 个盘子中的方…
这题其实在2.6前面的专题也有出现过,我还以为我有写,结果发现,并没有.于是就现在写了.这2题其实重复了......我就按放苹果的来说. 题意:把N个苹果放在M个盘子里,允许有的盘子空着不放,问共有多少种不同的分法. 解法:f[i][j]表示把 i 个苹果放在 j 个盘子的方案数,分有空盘子和无空盘子的情况DP. (1)至少有1个空盘子:f[i][j]=f[i][j-1] (2)没有空盘子:i≥j,则再 +f[i-j][j].         而对于f[i-j][j]有 2 种理解--所有盘子中…
原题链接:http://poj.org/problem?id=1664 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n 和 m 的关系可以进一步分析: 特殊的 n = 1 || m = 1 || n = 0 时只有一种方法 当 m < n时,即使苹果每个盘子放一个也没法放满所有盘子,题目允许有的盘子空着不放,所以我们可以将空盘子去掉,即 f ( m , n ) = f ( m , m ) 当 m >= n时,这时…
题目 :X个相同的苹果放入Y个篮子,(1)篮子可以为空 ,篮子不同. 放法有C(X+Y-1,Y-1 );// (2)篮子不可以为空,篮子不同.放法有C(X-1,Y-1) //插挡板法 分析有了这个组合公式,参考我的 求组合数程序即可解决问题.(3)篮子可以为空,篮子相同.按上面程序求解 递推公式dp[i][j]=dp[j-i][i]+dp[j][i-1] #if 0 /* m个相同的苹果放入n个相同的篮子,篮子可以为空. 下面两种方法求解,动态规划和递归.但都须知: dp[0][j]=0;含义为…
放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31295   Accepted: 19742 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. Output 对…