暑假集训第三周第二阶段 搜索 J - 放苹果
2015-07-31 16:51
113 查看
J - 放苹果
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d
& %I64u
Submit Status
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
Sample Output
分析:
这题说是搜素,不如说是递推或者说是动态规划,找出变化的规律,推出变化式,问题就会解决
说是搜素,可能是因为用到了递归,用到了深搜
思路:其实这根将一个整数m分成n个整数之和是类似的。
设f[m]
为将m分成最多n份的方案数,且其中的方案不重复,即每个方案前一个份的值一定不会比后面的大。
则有:
f[m]
= f[m][n - 1] + f[m - n]
;
= 1 // m== 0 || n == 1
= 0 // m < 0
f[m][n - 1]相当于第一盘子中为0,只用将数分成n - 1份即可。因为0不会大于任何数,相当于f[m][n - 1]中的方案前面加一个为0的盘子,而且不违背f的定义。所以f[m][n - 1]一定是f[m]
的方案的一部分,即含有0的方案数。
f[m - n]
相当于在每个盘子中加一个数1。因为每个盘子中加一个数1不会影响f[m][n - 1]中的方案的可行性,也不会影响f的定义。所以f[m - n]
一定是f[m]
的方案的一部分,即不含有0的方案数。
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d
& %I64u
Submit Status
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
分析:
这题说是搜素,不如说是递推或者说是动态规划,找出变化的规律,推出变化式,问题就会解决
说是搜素,可能是因为用到了递归,用到了深搜
思路:其实这根将一个整数m分成n个整数之和是类似的。
设f[m]
为将m分成最多n份的方案数,且其中的方案不重复,即每个方案前一个份的值一定不会比后面的大。
则有:
f[m]
= f[m][n - 1] + f[m - n]
;
= 1 // m== 0 || n == 1
= 0 // m < 0
f[m][n - 1]相当于第一盘子中为0,只用将数分成n - 1份即可。因为0不会大于任何数,相当于f[m][n - 1]中的方案前面加一个为0的盘子,而且不违背f的定义。所以f[m][n - 1]一定是f[m]
的方案的一部分,即含有0的方案数。
f[m - n]
相当于在每个盘子中加一个数1。因为每个盘子中加一个数1不会影响f[m][n - 1]中的方案的可行性,也不会影响f的定义。所以f[m - n]
一定是f[m]
的方案的一部分,即不含有0的方案数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include<stdio.h> int DFS(int x,int y) { if(x<0) return 0; if(x==0||y==1) return 1; return DFS(x,y-1)+DFS(x-y,y); } int main() { int m,n,k,t,i; scanf("%d",&t); while(t--) { scanf("%d %d",&m,&n); k=DFS(m,n); printf("%d\n",k); } return 0; }
相关文章推荐
- DFS解数独问题
- hdu1016 Prime Ring Problem 素数环
- hdu1241Oil Deposits 深广搜
- 深搜随想
- UVA 291 The House Of Santa Claus(DFS/深搜)
- POJ 2192 / ZOJ 2401 : Zipper - DP
- POJ3009 Curling 2.0 DFS 深搜
- 小学生玩ACM----深搜
- 杭电 HDU 1426 Sudoku Killer
- NYOJ927The partial sum problem
- NYOJ587blockhouses
- 搜索之“炸弹人”
- hdu1584 深搜水题
- 2012蓝桥杯决赛-数独
- 历届试题 大臣的旅费
- NYOJ--20(搜索)-题目----------------------------- 吝啬的国度
- NYOJ--32(搜索)-题目-----------------------------组合数
- NYOJ--27(搜索)-题目-----------------------------水池数目
- NYOJ--42(搜索)-题目----------------------------- 一笔画问题
- NYOJ--58(搜索)-题目-----------------------------最少步数