C++中M个盒子中N个球的组合列表

2023-12-15

我想编写一个函数,生成一个元组数组,其中包含 C++ 中 M 个盒子中 N 个球的所有可能排列。

顺序(编辑:在结果列表中)并不重要,只是第一个必须是 (N,0,...,0) 和最后一个 (0,0,...,N)。

我在网上没有找到这样的C++实现,只有字符的排列或排列数量的计算......

有任何想法吗 ?


有一个巧妙的技巧可以解决这个问题。想象一下我们采取了n球和m− 1 个盒子并将它们排成一排n + m− 1(盒子与球混在一起)。然后将每个球放入其右侧的盒子中,并在右侧添加第 m 个盒子,用于放置剩余的球。

row containing a box, two balls, a box, one ball, a box, one ball, and an imaginary box

这会产生一个排列n球进m boxes.

row of boxes containing zero, two, one, and one ball respectively

It is easy to see that there are the same number of arrangements of n balls in sequence with m − 1 boxes (the first picture) as there are arrangements of n balls in m boxes. (To go one way, put each ball in the box to its right; to go the other way, each box empties the balls into the positions to its left.) Each arrangement in the first picture is determined by the positions where we put the boxes. There are m − 1 boxes and n + m − 1 positions, so there are n + m − 1Cm − 1 ways to do that.

所以你只需要一个普通的组合算法(看到这个问题)生成盒子的可能位置,然后取连续位置之间的差值(小于 1)来计算每个盒子中球的数量。

在Python中这会非常简单,因为有一个组合标准库中的算法:

from itertools import combinations

def balls_in_boxes(n, m):
    """Generate combinations of n balls in m boxes.

    >>> list(balls_in_boxes(4, 2))
    [(0, 4), (1, 3), (2, 2), (3, 1), (4, 0)]
    >>> list(balls_in_boxes(3, 3))
    [(0, 0, 3), (0, 1, 2), (0, 2, 1), (0, 3, 0), (1, 0, 2), (1, 1, 1), (1, 2, 0), (2, 0, 1), (2, 1, 0), (3, 0, 0)]

    """
    for c in combinations(range(n + m - 1), m - 1):
        yield tuple(b - a - 1 for a, b in zip((-1,) + c, c + (n + m - 1,)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中M个盒子中N个球的组合列表 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 私有模板函数

    我有一堂课 C h class C private template
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 如何将 gif 保存到我的相册中?

    我尝试使用 UIImageWriteToSavedPhotosAlbum 和 ALAssetsLibrary 将我的 gif 保存到相册 但是当我尝试通过电子邮件发送 gif 时 它没有动画 我很确定元数据在保存时会丢失 有谁知道如何保存
  • 如何在 R 中使用 ggplot2 制作类似的图?

    对于以下数据集 我想为每个变量绘制图表 并对每个 10 个观察值进行不同的颜色 我可以使用 R 库来做到这一点 我想学习如何使用 ggplot2 来做到这一点 dput mydata structure list beta0 C1 c 5
  • 使用 make 文件创建目录

    我想使用 makefile 创建目录 我的项目目录是这样的 Project output source Testfile cpp Makefile 我想将所有对象和输出放入相应的输出文件夹中 我想创建编译后像这样的文件夹结构 Project
  • 在 Knit 中调整观星台的大小

    我使用 knit 整理了一份文档 虽然该文档的大部分看起来都不错 但有一个回归表太宽 如果不进行一些更改 就无法容纳在页面上 回归表是使用 stargazer 生成的 并且相当广泛 我尝试按如下方式调整整个块的大小 r echo FALSE
  • 无法连接到 Localdb,但可以使用命名管道

    我真的很讨厌将我的应用程序连接到数据库 我正在尝试使用连接到数据库 localdb MSSQLLocalDB在连接字符串中 我收到此错误 A network related or instance specific error occurr
  • web-api POST body 对象始终为 null

    我仍在学习 Web API 所以如果我的问题听起来很愚蠢 请原谅我 我的里面有这个StudentController public HttpResponseMessage PostStudent FromBody Models Studen
  • 使用 VBA 创建 Outlook 事件(不是约会!)

    所以有一个线程所以链接在这里它链接了如何创建 Outlook 事件 但实际上它创建的是约会 而不是事件 差异可以阅读HERE 我的问题很简单 如何使用 VBA 创建实际事件而不是约会 谢谢 约会和事件之间的区别是事件持续 24 小时或更长时
  • Zend 表单引导注释日期选择器“提供给转义助手的对象,但标志不允许递归”

    我正在使用带有 Bootstrap 和 ReverseForm 适配器的 Zend 框架 并且有一个有趣的问题 当我在 Zend Form 中使用 Bootstrap Datepicker 时 出现下一个异常 Object provided
  • 将位图转换为 ninepatch 以用作背景

    我有一个问题困扰了我好几天了 我正在尝试将九个补丁图像转换为位图数组 并将特定颜色更改为不同的颜色 我无法将位图转换回九个补丁 因此我可以将其用作布局的背景 我尝试使用此代码创建位图 然后将其转换回九个补丁可绘制对象 但它只是启动活动并闪烁
  • asp 服务器错误“无法加载文件或程序集”,但程序集肯定存在。

    我目前收到以下错误 在 locahost 网站上 Could not load file or assembly MySql Data Version 6 5 4 0 Culture neutral PublicKeyToken c5687
  • android中Videoview的身份验证

    我正在使用一个视频观看播放http视频 Http视频url需要验证 所以请让我知道如何为 VideoView 设置身份验证 如果没有 是否还有其他替代方法来查看经过身份验证的视频 感谢和问候 斯里 哈沙 VideoView 中有一个隐藏方法
  • 如何设置 ASP.NET 身份验证属性

    我的 web config 文件中有以下设置 如果用户未登录 它基本上会限制对页面的访问 如果我不想使用 asp 登录控件或实现会员资格提供程序 我如何 告诉 asp loginregister aspx 页面已授权该请求如果我想实现自己的
  • Android 片段中的手电筒 - SurfaceView

    我正在尝试为当地音乐会开发手电筒应用程序 这是一个更大的应用程序的一部分 因此它位于一个片段中 这是代码 首先 我声明了该类及其变量 public class ConcertFragment extends Fragment ToggleB
  • 在 VBA 中解析 XML

    我有一个 XMLResponseXML目的 我想循环遍历所有名为 XYZ 的节点 我该怎么做呢 以下是您可以使用的一些功能parsing your XML Private xml As MSXML DOMDocument Private S
  • 读入R中路径中包含UTF-8字符的文件

    假设我有大量 rds 文件 其中一些文件的路径中包含 UTF 8 字符 由于某种原因 R 无法处理一些特殊的重音 例如enc2utf8 它应该打印 但在我最后它转换为 C 这使得 R 无法识别该文件 有什么想法如何处理这种情况 帮助 R 进
  • 从c中的另一个文件链接静态函数

    我有两个源文件 A c 和 B c A c 有一个函数 call me static int call me void call me register register call me call me 正如你所看到的 call me函数被
  • 从 UWP 应用程序中提取图标

    在尝试实现 打开方式 功能时 我遇到了从 UWP 应用程序提取图标的问题 因此 在收到推荐的应用程序列表后 借助以下命令打开特定文件SHAssocEnumHandlers 我试图在以下命令的帮助下提取每个应用程序的图标IAssocHandl
  • Windows 上 Boost.Python 1.54(调试版本)对 Python27.lib 的令人困惑的依赖关系

    我一定犯了某种明显的错误 但经过几个小时的战斗 我无法取得进一步的进展 升级到 Boost 1 54 CMake 2 8 12 和 Python 2 7 5 所有三个均来自slightly早期的次要版本 我的 Python 绑定projec
  • 如何获取 Pandas 数据框中所有非 NaN 项的行、列索引

    如何迭代如下所示的数据帧并将非 NaN 值位置作为元组返回 IE df 0 1 2 0 NaN NaN 1 1 1 NaN NaN 2 NaN 2 NaN 我会得到 0 1 2 0 1 2 的输出 最好的方法是执行嵌套 for 循环吗 或者
  • C++中M个盒子中N个球的组合列表

    我想编写一个函数 生成一个元组数组 其中包含 C 中 M 个盒子中 N 个球的所有可能排列 顺序 编辑 在结果列表中 并不重要 只是第一个必须是 N 0 0 和最后一个 0 0 N 我在网上没有找到这样的C 实现 只有字符的排列或排列数量的