zoukankan      html  css  js  c++  java
  • 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 }
    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    面向对象之prototype,__proto__
    Screen对象
    location对象
    history对象
    JS计时器
    window对象
    Dom操作html详细
    终端 git log 修改样式
    null 和 NULL 判断
    textfield设置左边距
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4172672.html
Copyright © 2011-2022 走看看