百练1664:放苹果

xiaoxiao2021-02-28  77

1664:放苹果

查看提交统计提示提问 总时间限制:  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 来源 lwx@POJ 开始没读明白题意,还以为这不就是最简单的排列组合题吗?直到看到了“注意”。。。 又是递归。对于递归的问题有一种处理思路就是把问题分类(往往这个分类过程就很难。。。)然后分别去解决。这道题就分成了至少一个盘子空的时候和什么什么等价,所有盘子都不空时和什么什么等价,这样写出了递归函数。代码相当简洁(来源:程序设计导引及在线实践) #include <cstdio> using namespace std; int f(int m,int n) { if(m==0||n==1) return 1; if(n>m) return f(m,m); return f(m,n-1)+f(m-n,n); } int main() { int t; scanf("%d",&t); while(t--){ int m,n; scanf("%d%d",&m,&n); //m个苹果,n个盒子 printf("%d\n",f(m,n)); } return 0; }坚持,而不是打鸡血~
转载请注明原文地址: https://www.6miu.com/read-80980.html

最新回复(0)