博客
关于我
m个苹果放入n个盘子问题
阅读量:791 次
发布时间:2023-02-13

本文共 807 字,大约阅读时间需要 2 分钟。

将m个苹果放入n个盘子中的分法数目可以通过递归或动态规划来解决。递归方法根据盘子数目进行分治,而动态规划则通过预处理中间结果来优化计算。

递归解法

int fun(int m, int n) {    if (m == 0 || n == 1)        return 1;    if (n > m)        return fun(m, m);    else        return fun(m, n - 1) + fun(m - n, n);}

动态规划解法

初始化一个二维数组mat,其中mat[i][j]表示将i个苹果放入j个盘子中的分法数目。填充逻辑如下:

  • 初始化边界条件:mat[i][0] = 0(无苹果不可行),mat[0][j] = 1(无苹果算一种分法),mat[i][1] = 1(只能放一个盘子)。
  • 遍历每一个可能的苹果数目i和盘子数目j,根据递归关系填充表格。
  • int[][] mat = new int[m + 1][n + 1];for (int i = 0; i <= m; i++) {    mat[i][0] = 0;    mat[i][1] = 1;}for (int i = 0; i <= n; i++) {    mat[0][i] = 1;}for (int i = 1; i <= m; i++) {    for (int j = 1; j <= n; j++) {        if (j > i) {            mat[i][j] = mat[i][i];        } else {            mat[i][j] = mat[i][j - 1] + mat[i - j][j];        }    }}return mat[m][n];

    通过上述方法,可以高效地计算将m个苹果放入n个盘子中的分法数目。

    转载地址:http://krdfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL简单查询
    查看>>
    MySQL管理利器 MySQL Utilities 安装
    查看>>
    MySQL篇(管理工具)
    查看>>
    mysql类型转换函数convert与cast的用法
    查看>>
    mysql系列一
    查看>>
    MySQL系列之数据类型(Date&Time)
    查看>>
    MySQL系列之数据类型(Date&Time)
    查看>>
    Mysql系列之锁机制
    查看>>
    Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
    查看>>
    MySql系列:[4200][1140]In aggregated query without GROUP BY, expression #2 of SELECT list contains nona
    查看>>
    MySQL索引
    查看>>
    Mysql索引
    查看>>
    mysql索引
    查看>>
    mysql索引
    查看>>
    Mysql索引,索引的优化,如何避免索引失效案例
    查看>>
    Mysql索引、命令重点介绍
    查看>>
    mysql索引、索引优化(这一篇包括所有)
    查看>>
    Mysql索引一篇就够了
    查看>>
    MySQL索引一篇带你彻底搞懂(一次讲清实现原理加优化实战,面试必问)
    查看>>
    MySQL索引下沉:提升查询性能的隐藏秘
    查看>>