zoukankan      html  css  js  c++  java
  • 放苹果

    【题目描述】

    把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


    
    
    还是递归;
    我们可以把情况分为两种;
    1.有空盘子;
    2.无空盘子;
    有空盘子时,
    从一个空盘开始递归,
    1-2-3....
    无空盘子时,
    每个盘子至少一个苹果,
    放完一个,
    还剩m-n个苹果,
    以此类推,
    然后把两种情况加起来,
    和就是结果。
     1 #include<iostream>
     2 using namespace std;
     3 int t,m,n;
     4 int apple(int,int);
     5 int main()
     6 {
     7     cin>>t;
     8     for(int i=1;i<=t;i++)
     9     {
    10         cin>>m>>n;
    11         cout<<apple(m,n)<<endl;
    12     }
    13     return 0;
    14 }
    15 int apple(int m,int n)
    16 {
    17     if(m==0||n==1) return 1;
    18     if(m<n) return apple(m,m);
    19     return apple(m-n,n)+apple(m,n-1);
    20 }

    每日打卡O(∩_∩)O~

    
    
    看不见我看不见我看不见我
  • 相关阅读:
    bs4的学习
    mysqldb模块的简单用法
    起点中文网(主要是在目录下创建文件)
    怎么把列表转化为字符串
    GUI开发者桌面搜索文件工具
    用表格形式保存文档 xlwt
    如何解决编码有问题
    影魔
    龙与地下城
    不等关系
  • 原文地址:https://www.cnblogs.com/sxy2004/p/11478716.html
Copyright © 2011-2022 走看看