zoukankan      html  css  js  c++  java
  • 华为OJ之放苹果

    题目描述:

    把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
    输入
    每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。<=n<=10<=m<=10
    样例输入
    7 3
    样例输出
    8

    题目分析:

    本题实际上是一个划分问题,借助于递归这个强大的工具,我们可以比较容易地进行解决,具体分析思路如下:

    1,我们用f(m, n)来表示m个苹果,n个篮子的情况;

    2,出口条件:当m <= 1时f(m, n) = 1, 当n = 1时f(m, n) = 1; 

    3,当n > m时,无论怎么放置,总会有(n - m)个篮子为空,那么去掉这些篮子也不会对总的放置种类有什么影响,即f(m, n) = f(m, m);

       当 n <= m时,又分为两种情况:

       3-1,所有的篮子都不会为空,此时相当于每个篮子都至少会有一个苹果,那么去掉这些苹果,总的放置种类也不会改变,即即f(m, n) = f(m - n, n);

       3-2,至少有一个篮子不会为空,那么去掉这个篮子,总的放置种类也不会改变,即即f(m, n) = f(m, m - 1);

         那么总的放置种类数相加即可。

    4,根据3中的分析,递归过程中f(m, n)参数1和参数2都会不断减小,一定会到达出口条件,符合递归的条件。

    代码(Java实现):

     1 import java.util.Scanner;
     2 
     3 public class layApple {
     4     public static void main(String[] args) {
     5         int[] paras = getInput();
     6         System.out.println(findNumsOfLaying(paras[0], paras[1]));
     7     }
     8     public static int[] getInput() {
     9         @SuppressWarnings("resource")
    10         Scanner reader = new Scanner(System.in);
    11         int[] paras = new int[2];
    12         paras[0] = reader.nextInt();
    13         paras[1] = reader.nextInt();
    14         return paras;
    15     }
    16     
    17     public static int findNumsOfLaying(int m, int n) {
    18         if (m == 0 || n == 1) {
    19             return 1;
    20         }
    21         if (n > m) {
    22             return findNumsOfLaying(m, m);
    23         } else {
    24             return findNumsOfLaying(m - n, n) + findNumsOfLaying(m, n - 1);
    25         }
    26     }
    27 }
  • 相关阅读:
    window.onload方法 和jquery中的$(document).ready()方法区别
    jQuery ligerGrid 打造通用的分页排序查询表格(提供下载)
    ASP.NET MVC 4 移动特性
    javaScript RegExp常用正则表达式
    jQuery解密之执行过程分析
    1.1 jQuery总体框架
    jqMobi指南系列教程是《 jqMobi Javascript Frameworks Cheat Sheet》 的中文版
    网页设计前端页面制作的规范要求和注意事项
    js控制position:fiexd 浏览器定位 兼容个浏览器
    通用权限管理设计 之 数据权限
  • 原文地址:https://www.cnblogs.com/yonguo123/p/6706793.html
Copyright © 2011-2022 走看看