• poj 1664 放苹果 递归


    题目链接:

      http://poj.org/problem?id=1664

    题目描述:

      有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式?

    解题思路:

      当前有n个苹果,m个盒子。

      (1):假设当前最少的盒子放置一个苹果,则给m个盒子分别放一个苹果,剩下n-m个苹果。

      (2):假设当前最少的盒子不放苹果,则剩m-1个box,n个苹果。

    代码:

      

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cstdlib>
     4 #include <iostream>
     5 using namespace std;
     6 
     7 int f (int n, int m);
     8 
     9 int main ()
    10 {
    11     int t, n, m;
    12     scanf ("%d", &t);
    13     while (t --)
    14     {
    15         scanf ("%d %d", &n, &m);
    16         printf ("%d
    ", f(n, m));
    17     }
    18     return 0;
    19 }
    20 
    21 int f (int n, int m)
    22 {
    23     if (n < 0)//没有苹果了,违法
    24         return 0;
    25     if (n == 0 || m == 1)//一个盒子,无论有几个苹果,就只有一种放置方法,没有苹果一样;
    26         return 1;//若有一个苹果就需要讨论累加到哪一个剩余的盒子里,盒子没有顺序,但是盒子里苹果数目不同
    27     return f (n-m, m) + f (n, m-1);
    28 }
    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    Unity-国际版下载
    Js数值处理
    Vue,部署通过Url指向dist里的index, 通过IIS 7.0及以上部署,添加 注册托管代码模块
    反编译
    Node 命令
    VUE开发命令
    VS2017发布到部署网站
    谷歌浏览器提示您的连接不是私密连接
    iis,配置
    VS开发android
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4172672.html
Copyright © 2020-2023  润新知