博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度oj 题目1160:放苹果
阅读量:5288 次
发布时间:2019-06-14

本文共 1193 字,大约阅读时间需要 3 分钟。

题目描述:

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

输入:

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

输出:

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

样例输入:
17 3
样例输出:
8 这道题真的是如果没思路就一点儿也不会。主要的思想是用递归函数,向n个篮子里放m个苹果,假如有空的,相当于往n-1个篮子里放m个苹果;假如没空的,就相当于往n个篮子里放m-n个苹果,减n的意思是 n个篮子里放了n个苹果。 代码如下:
1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 int dp[11][11]; 9 10 int cal(int m, int n) {11 if(m < 0 || n < 0) {12 return 0;13 }14 if(n == 1) {15 return 1;16 }17 if(dp[m][n] != 0) {18 return dp[m][n];19 }20 else {21 dp[m][n] = cal(m, n-1) + cal(m-n, n);22 return dp[m][n];23 }24 }25 26 int main(int argc, char const *argv[])27 {28 int n, m, t;29 memset(dp, 0, sizeof(dp));30 while(scanf("%d",&t) != EOF) {31 while(t--) {32 scanf("%d %d",&m, &n);33 int ans = cal(m, n);34 printf("%d\n",ans);35 }36 }37 return 0;38 }

 

转载于:https://www.cnblogs.com/jasonJie/p/5757936.html

你可能感兴趣的文章
U65320 Oak的预算方案
查看>>
P1064 金明的预算方案
查看>>
P2902 [USACO08MAR]珍珠配对Pearl Pairing
查看>>
P1852 [国家集训队]跳跳棋
查看>>
P1318 积水面积
查看>>
P1572 计算分数
查看>>
P1056 排座椅
查看>>
P5535 【XR-3】小道消息
查看>>
P1033 自由落体
查看>>
P2706 巧克力
查看>>
#575. 列车调度
查看>>
P1144 最短路计数
查看>>
P1209 [USACO1.3]修理牛棚 Barn Repair
查看>>
P2904 [USACO08MAR]跨河River Crossing
查看>>
P4379 [USACO18OPEN]Lemonade Line
查看>>
P1109 学生分组
查看>>
P3650 [USACO1.3]滑雪课程设计Ski Course Design
查看>>
P2789 直线交点数
查看>>
P4432 [COCI2017-2018#2] ZigZag
查看>>
#578. 收集卡片
查看>>