百炼-1664-放苹果-C语言-递归算法入门

xiaoxiao2021-02-28  70

递归算法入门题,不过如果数字再大一点可能要考虑记忆化搜索了。

/************************************************** **文件名:百炼-1664 **Copyright (c) 2015-2025 OrdinaryCrazy **创建人:OrdinaryCrazy **日期:20170806 **描述:百炼-1664参考答案 **版本:1.0 ***************************************************/ #include <stdio.h> /************************************************** 对于将m个苹果放入n个盘子 1,如果n>m那么必然有至少n-m个盘子是空的,分法数等于将m个苹果放入m个盘子时的情况 2,对于n<=m的情况,有两种分发:有盘子空着,没有盘子空着 f(m,n)=f(m-n,n)+f(m,n-1) ***************************************************/ /************************************************** **函数名:slove **输入:m-苹果数,n-盘子数 **输出:对应情况的分法数 **功能:计算对应情况的分法数 **作者:OrdinaryCrazy **日期:20170806 **版本:1.0 ***************************************************/ int solve(int m,int n) { if(m == 0 || n == 1) return 1; if(n > m) return solve(m,m); return solve(m - n,n) + solve(m,n - 1); } int main() { int t,m,n; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); printf("%d\n",solve(m,n)); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-63054.html

最新回复(0)