热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

排列组合n个球放入m个盒子m问题总结(转)

原文链接:http:blog.csdn.netqwb492859377articledetails50654627求,盒子都可以分成是否不能区分&#x

原文链接:http://blog.csdn.net/qwb492859377/article/details/50654627

求,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论。

 

1.球同,盒不同,无空箱

C(n-1,m-1), n>=m
0, n

使用插板法:n个球中间有n-1个间隙,现在要分成m个盒子,而且不能有空箱子,所以只要在n-1个间隙选出m-1个间隙即可

 

 

2.球同,盒不同,允许空箱

C(n+m-1,m-1)

我们在第1类情况下继续讨论,我们可以先假设m个盒子里都放好了1个球,所以说白了就是,现在有m+n个相同的球,要放入m个不同的箱子,没有空箱。也就是第1种情况

 

 

3.球不同,盒相同,无空箱

第二类斯特林数dp[n][m]
dp[n][m]&#61;m*dp[n-1][m]&#43;dp[n-1][m-1],1<&#61;m dp[k][k]&#61;1,k>&#61;0
dp[k][0]&#61;0,k>&#61;1
0,n

这种情况就是第二类斯特林数&#xff0c;我们来理解一下这个转移方程。

对于第n个球&#xff0c;如果前面的n-1个球已经放在了m个箱子里&#xff0c;那么现在第n个球放在哪个箱子都是可以的&#xff0c;所以m*dp[n-1][m];

如果前n-1个球已经放在了m-1个箱子里&#xff0c;那么现在第n个球必须要新开一个箱子来存放&#xff0c;所以dp[n-1][m-1]

其他的都没法转移过来

 

 

 

4.球不同&#xff0c;盒相同&#xff0c;允许空箱

sigma dp[n][i],0<&#61;i<&#61;m,dp[n][m]为情况3的第二类斯特林数

这种情况就是在第3种情况的前提下&#xff0c;去枚举使用的箱子的个数

 

 

 

5.球不同&#xff0c;盒不同&#xff0c;无空箱

dp[n][m]*fact[m],dp[n][m]为情况3的第二类斯特林数,fact[m]为m的阶乘

因为球是不同的&#xff0c;所以dp[n][m]得到的盒子相同的情况&#xff0c;只要再给盒子定义顺序&#xff0c;就等于现在的答案了

 

 

6.球不同&#xff0c;盒不同&#xff0c;允许空箱

power(m,n) 表示m的n次方

每个球都有m种选择&#xff0c;所以就等于m^n

 

 

7.球同&#xff0c;盒同&#xff0c;允许空箱

dp[n][m]&#61;dp[n][m-1]&#43;dp[n-m][m], n>&#61;m
dp[n][m]&#61;dp[n][m-1], n 边界dp[k][1]&#61;1,dp[1][k]&#61;1,dp[0][k]&#61;1

现在有n个球&#xff0c;和m个箱子&#xff0c;我可以选择在所有箱子里面都放上1个球&#xff0c;也可以不选择这个操作。

如果选择了这个操作&#xff0c;那么就从dp[n-m][m]转移过来

如果没有选择这个操作&#xff0c;那么就从dp[n][m-1]转移过来

 

 

 

8.球同&#xff0c;盒同&#xff0c;无空箱

dp[n-m][m],dp同第7种情况,n>&#61;m
0, n

因为要求无空箱&#xff0c;我们先在每个箱子里面放1个球&#xff0c;然后还剩下n-m个球了&#xff0c;再根据情况7答案就出来了

 

如果有错误&#xff0c;希望菊苣指出~

转载请注明出处...


推荐阅读
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • 在同一个应用程序中,`Class JavaLaunchHelper` 存在多个实现版本,导致了 objc 系统报告冲突。具体表现为:objc[64179] 指出 `Class JavaLaunchHelper` 在两个不同的路径中被实现,这可能会影响应用程序的稳定性和性能。为了解决这一问题,建议检查并统一 `JavaLaunchHelper` 的实现版本,确保其唯一性。 ... [详细]
  • 在PHP多线程扩展开发中,面临的主要挑战之一是多线程调用PHP用户类方法时可能出现的内存错误。具体表现为当多个线程同时调用同一个类实例的同一方法时,系统会抛出内存错误。为了解决这一问题,本文深入分析了PHP多线程扩展的实现机制,并提出了几种有效的解决方案和技术思路,包括线程安全的类设计、内存管理优化以及线程同步机制的改进。通过这些方法,可以显著提升PHP多线程扩展的稳定性和性能。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 为了优化用户体验,本文探讨了如何调整下拉菜单的宽度。通过合理设置宽度,可以提升界面的美观性和易用性。文章提供了具体的代码示例,帮助开发者实现这一目标。例如,可以通过 CSS 或 JavaScript 来动态调整下拉菜单的宽度,确保其在不同设备和屏幕尺寸上都能保持良好的显示效果。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在日常开发中,正则表达式是处理字符串时不可或缺的工具。本文汇总了常用的正则表达式,帮助开发者高效解决常见问题。例如,验证数字:`1$`;验证n位数字:`^\d{n}$`;验证至少n位数字:`^\d{n,}$`;验证m到n位数字:`^\d{m,n}$`。此外,还涵盖了验证零和非零数字、邮箱地址、手机号码等多种场景,建议关注并收藏以备不时之需。 ... [详细]
  • Gliffy Diagrams:高效实用的流程图绘制工具
    Gliffy Diagrams 是一款高效且易于使用的流程图绘制工具,能够显著提升工作效率。结合百度脑图等辅助工具,用户可以更加便捷地创建和管理各种图表。本文详细介绍了 Gliffy Diagrams 的核心功能和使用方法,帮助读者快速上手。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 深入解析IP地址、子网掩码与网关的基本概念——Vecloud微云网络技术详解
    本文旨在为网络新手详细解析IP地址、子网掩码和网关的基本概念。IP地址用于唯一标识网络中的设备,类似于现实生活中的身份证;子网掩码则用于确定IP地址中网络部分和主机部分的划分;而网关则是连接不同网络的桥梁,使数据能够在不同的网络间传输。通过这些基础概念的深入理解,读者将能够更好地掌握网络通信的核心原理。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 如何在任意浏览器中轻松安装并使用VSCode——Codeserver简易指南
    code-server 是一款强大的工具,允许用户在任何服务器上部署 VSCode,并通过浏览器进行访问和使用。这一解决方案不仅简化了开发环境的搭建过程,还提供了高度灵活的工作方式。用户只需访问 GitHub 上的官方仓库(GitHub-coder/code-server),即可获取详细的安装和配置指南,快速启动并运行 code-server。无论是个人开发者还是团队协作,code-server 都能提供高效、便捷的代码编辑体验。 ... [详细]
author-avatar
merlion-p
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有