在给定总数、部分数和最大被加数的情况下查找整数分区的数量

2024-03-27

我正在寻找总共 N 个整数分区的数量,其中多个部分为 S,最大部分恰好为 X,而无需枚举所有分区。

例如:所有 100 的分区都有 10 个部分,最大部分为 42。

我没有找到解决这个问题的定理或分区恒等式,我怀疑这是一个不平凡的问题,不容易从已知定理中推导出来(例如 Nijenhuis 和 Wilf 1978、Andrews 等人 2004、Bona 2006):

例如:N 中恰好有 S 个部分的分区数量等于 N 中恰好有 S 部分为最大部分的分区数量。

这个问题与我的研究有关,这远远超出了纯数学的范围。

Update:这个问题在下面得到了回答,但我想发布我用来实现它的Python脚本。我可能会通过 Cython 推动它以获得一些速度。

n = 100 # the total
s = 10  # number of parts
x = 20  # largest part
print Partitions(n,length=s,max_part=x).cardinality() # Sage is very slow at this

def parts_nsx(n,s,x):
    if n==0 and s==0:return 1
    if n<=0 or s<=0 or x<=0:return 0
    if n>0 and s>0 and x>0:
        _sum = 0
        for i in range(0,s+1):
            _sum += parts_nsx(n-i*x, s-i, x-1)
        return _sum    
print parts_nsx(n,s,x) 

对于这个数量的分区递归P(n,s,x) holds:

P(n,s,x) = sum P(n-i*x, s-i, x-1), for i=0,...,s 
P(0,0,x) = 1
P(n,s,x) = 0, if n <= 0 or s <= 0 or x <= 0

计算效率不高,也许在你的例子中它会足够快。

最好使用记忆法来实现。

Edit:

具有记忆功能的 Python 实现:

D = {}
def P(n,s,x):
  if n > s*x or x <= 0: return 0
  if n == s*x: return 1
  if (n,s,x) not in D:
    D[(n,s,x)] = sum(P(n-i*x, s-i, x-1) for i in xrange(s))
  return D[(n,s,x)]

P(100, 10, 42)
2685871

Update:

满足参数的分区n,s,x可以有i最大尺寸的分区x。 通过删除这些i有尺寸的零件x我们在参数方面遇到了同样的问题n-i*x, s-i, x-1。 例如。 100 的分区有 10 个部分,42 作为最大部分,可以有 0、1 或 2 个大小为 42 的部分。

P(0,0,x) = 1意味着我们在之前的迭代中已经有了分区。

P(n,s,x) = 0, if n>s*x意味着我们不能用最大大小的所有分区对 n 进行分区,因此参数的组合是不可能的。 边界条件是

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在给定总数、部分数和最大被加数的情况下查找整数分区的数量 的相关文章

  • 如何在 JavaScript 中使用自定义 n 长度字符集打印 n 位数字而不使用 toString

    以同样的方式 我们使用字符得到十六进制 数字 123456789abcdef 你可以简单地做integer toString 16 从整数到十六进制 gt 16 toString 16 10 我想改用自定义字符集和自定义基础 所以对于十六进
  • leetcode 逆整数——如何处理溢出

    问题是 反转整数的数字 示例1 x 123 返回321 示例2 x 123 返回 321 您是否注意到反转的整数可能会溢出 假设输入是32位整数 那么1000000003的逆序就会溢出 遇到此类情况应该如何处理 抛出异常 很好 但是如果不能
  • 如何比较2个整数是否相等?

    如何在 C 中比较两个整数 我有一个用户输入 ID 即int 然后我就有了一个属于我的结构一部分的联系 ID 联系 ID 是int also 我需要比较它们是否相同 才能知道它存在 我做了这样的事情 if user input id com
  • java编程确定对称词[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是新来的 但我很难弄清楚如何编写代
  • 如何测试无损双精度/整数转换?

    我有一个 double 和一个 int64 t 我想知道它们是否具有完全相同的值 以及将一种类型转换为另一种类型是否不会丢失任何信息 我当前的实现如下 int int64EqualsDouble int64 t i double d ret
  • 寻找有关 Jeff 幻灯片中介绍的“Group varint 编码/解码”的更多详细信息

    我注意到 Jeff 的幻灯片 构建大规模信息检索系统的挑战 也可以在这里下载 http research google com people jeff WSDM09 keynote pdf http research google com
  • 如何在C++中存储1000000位整数

    在我的问题中 我必须保存大整数 例如最多 1000000 位数字 并执行一些操作 我该怎么做 我知道 C 中的 long int 最多可以存储 10 位数字 您可以使用GMP http gmplib org GNU 任意精度库 请注意 这不
  • Python:有没有办法阻止从 int 到 long int 的自动转换发生?

    考虑这个例子 gt gt gt from sys import maxint gt gt gt type maxint
  • 整数比较值的输出错误

    我有以下代码 public static void doIntCompareProcess int a 100 int b 100 Integer c 200 Integer d 200 int f 20000 int e 20000 Sy
  • 标准化整数与浮点的转换

    我需要将标准化整数值与实际浮点值相互转换 例如 对于 int16 t 值 1 0 用 32767 表示 1 0 用 32768 表示 尽管对每个整数类型 有符号和无符号 执行此操作有点乏味 但手动编写仍然很容易 然而 我想尽可能使用标准方法
  • TSP的一种变体:限制时间,访问尽可能多的节点

    让我们再次使用推销员上下文 如果销售员不需要拜访所有客户 但有时间限制 他必须拜访尽可能多的客户 我们怎样才能找到最佳路线 一个更高级的版本是 假设每个客户都被标记为货币收益 因此我们的销售人员希望最大化他实际访问的那些客户的总货币收益 只
  • 整数转换(缩小、扩大)、未定义的行为

    对我来说 以我可以轻松理解的方式找到有关该主题的信息非常困难 因此我要求对我所找到的内容进行审查 这都是关于转换和转换的 在示例中我将提到 signed unsigned int bigger signed unsigned char sm
  • Javascript解析int64

    如何将长整数 作为字符串 转换为 Javascript 中的数字格式而不用 javascript 对其进行四舍五入 var ThisInt 9223372036854775808 alert ThisInt r parseFloat Thi
  • 用于浮点和整数验证的 JavaScript

    我尝试创建一个 javascript 函数validate integer values从文本框 验证它的最佳方法是什么 以便仅integer and float值可以接受吗 数字验证所需的 javascript 函数 remove whi
  • 当 python 添加小整数时,幕后会发生什么? [复制]

    这个问题在这里已经有答案了 我正在摆弄id最近意识到 c Python 做了一些非常明智的事情 它确保小整数始终具有相同的值id gt gt gt a b c d e 1 2 3 4 5 gt gt gt f g h i j 1 2 3 4
  • 如何使Python中的浮点值显示.00而不是.0?

    简单的问题 抱歉我无法弄清楚 我有一些数字是由 浮动 字符串 它们显示为 xxx 0 但如果确实是整数 我希望它们以 00 结尾 我该怎么做 Thanks EDIT Python 说 float 没有 cal format gt gt gt
  • 是否有一个函数 f(n) 返回有序组合列表中的第 n: 个组合而不重复?

    当要选择的元素数 n 为 5 并且选择的元素数 r 为 3 时 没有重复的组合如下所示 0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4 随着 n 和 r 的增长 组合的
  • .NET 中的 base_convert

    NET 是否具有与 PHP 等效的本机功能基数转换 http php net base convert或者我需要自己写 我想从任何基数转换为任何其他基数 其中 to 基数或 from 基数可以是 2 36 的任何整数 PHP 函数示例 ba
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • Javascript 是否处理整数上溢和下溢?如果是,怎么办?

    我们知道Java不处理下溢和溢出 https stackoverflow com questions 3001836 how does java handle integer underflows and overflows and how

随机推荐

  • React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent

    我目前正在学习 React Testing Library 我想测试鼠标与元素的交互 目前我还不清楚 userEvent click element 和 fireEvent click element 之间的区别 两者都建议使用吗 在下面的
  • 无法连接到生产 Apple 推送通知服务器

    我们使用开发认证和 gateway sandbox push apple com 向配置的设备发送通知没有任何问题 但现在我们的应用程序已在商店中 看来我们甚至无法连接到生产 apn 服务器 gateway push apple com 来
  • Android singletop 单实例和单任务

    我在为不同的活动实现不同类型的启动模式时遇到设计问题 我有 5 项活动 视频列表 视频详情 收藏夹列表 视频搜索 视频播放器 当用户启动应用程序时 它会转到显示视频列表的 VideoList 单击任何视频会将它们带到视频详细信息 该页面中有
  • 使用 JSoup 提取 HTML 表格内容

    如何提取位于以下位置的表的内容 id 2 year 2012 acc conference gt http espn go com mens college basketball conferences stands id 2 year 2
  • 如何使用EMGU CV获取人脸识别的置信度值?

    我正在开发一个项目 其中我应该设计一个应用程序 可以检测路过的人的所有面孔 我有一个非常大的数据库 其中包含几个已知的人 我使用 EigenObjectRecognizer 来识别图像网络摄像头捕获的帧 但问题是有时它会错误地识别某些人 因
  • 如何使用 apply、map 或 applymap 查找 pandas dataframe 中的每一行和每一列数据类型?

    我有如图所示的数据框 我希望每行和列的数据类型都使用 apply map applymap 如何获取这个数据类型 有些列具有混合数据类型 如突出显示的 例如list 和 str 有些有 list 和 dict 示例 pandas 数据框 1
  • 有没有办法在参数替换后从 SqlCommand 获取完整的 sql 文本?

    我创建了一个带有包含参数的 SQL 查询的 SqlCommand 然后我将所有参数添加到类中 在将 SQL 查询发送到数据库之前 是否有一种简单的方法可以查看生成的 SQL 查询 这对于调试目的来说会很方便 例如 复制整个查询并在管理工作室
  • main.cpp:(.text+0x5f): 未定义的引用

    我尝试从 SDL 指南中编写一些练习 我这样编译 g o main main cpp I usr local include SDL2 L usr local lib lSDL2 我得到这个 tmp cci2rYNF o In functi
  • ASP.Net MVC:如何读取我的自定义声明值

    请参阅下面的代码 我知道通过这种方式我们可以将自定义数据添加到索赔中 但现在的问题是如何读回这些值 假设我想读回索赔价值电子邮件和电子邮件2请告诉我需要编写什么代码来读回索赔值电子邮件和电子邮件2 UserManager
  • 如何每秒运行一个 Runnable 来更新 UI

    我正在尝试在 kotlin android 中编写代码以每秒移动一个图像 但我无法使其工作 现在我正在使用Timer安排一个Timer Task每秒 但它没有按预期工作 这是我的代码 class Actvt Image
  • 使用 Google Pretify 显示 HTML

    为了让 Google Prettify 正确显示 HTML 代码示例 您应该替换所有 lt with lt 和所有的 gt with gt 如何仅使用 JavaScript 来自动化该过程 如果您将代码放入
  • 使用 Oracle SQL Developer 查询两个数据库

    有没有办法在 Oracle SQL Developer 中查询两个数据库 在单个查询中 我对 Oracle 不太熟悉 无论如何 除了标准的 CRUD 语法 我正在尝试从 SQL Server 表插入 Oracle 表 想做这样的事情 INS
  • 使用 CSS 显示徽标的正确方法是什么?

    我最近一直在学习CSS 我正在观看的教程系列说显示徽标图像的最佳方法是将文本包装在H1标签中 然后将该标签的CSS样式设置为背景图像 并带有文本缩进 99999 或类似的大数字 这看起来非常粗俗和不优雅 对于 SEO 目的来说 使用 CSS
  • 如何检查 NSString 是否包含数字值?

    我有一个从公式生成的字符串 但是我只想使用该字符串 只要它的所有字符都是数字 如果不是 我想做一些不同的事情 例如显示错误消息 我一直在环顾四周 但发现很难找到任何符合我想做的事情 我看过 NSScanner 但我不确定它是否检查整个字符串
  • 在python中将字节转换为文件对象

    我有一个小应用程序 它使用以下方式读取本地文件 open diefile path r as csv file open diefile path r as file and also uses linecache module 我需要将用
  • Angular2 查询参数订阅触发两次

    尝试处理 OAuth 登录场景 其中如果用户登陆页面authorization code在查询字符串中 我们处理令牌并继续or如果他们在没有该令牌的情况下登陆页面 我们会检查本地存储中是否存在现有令牌 确保其仍然有效 并根据其有效性重定向到
  • requestAccessToEntity iOS6-向后兼容性-EKEventStore

    遵循 iOS6 eventKit 和新的隐私设置 我使用以下代码 它在 iOS6 设备上运行得很好 不过 我希望相同的代码也适用于 iOS 5 x 的设备 并且我希望不要编写 相同的代码 两次 似乎是错误的 任何人都可以协助优雅的解决方案
  • 使用 Tailwind CSS 创建包含文本的水平线 (HR) 分隔线

    我想创建一个 hr 使用 Tailwind CSS 进行分隔 但我想在中间添加一些文本 而不是跨越整个页面宽度的水平线 例如 Continue 我在文档中找不到类似的内容 我怎样才能达到这个效果 如有必要 我可以将 HTML 更改为除 hr
  • spring,如何更改cglib命名策略

    当spring创建代理时 它使用带有默认命名策略的cglib 有什么办法可以改变命名策略吗 生成的类名与我使用的另一个框架冲突 好像是cglibclaims http cglib sourceforge net apidocs net sf
  • 在给定总数、部分数和最大被加数的情况下查找整数分区的数量

    我正在寻找总共 N 个整数分区的数量 其中多个部分为 S 最大部分恰好为 X 而无需枚举所有分区 例如 所有 100 的分区都有 10 个部分 最大部分为 42 我没有找到解决这个问题的定理或分区恒等式 我怀疑这是一个不平凡的问题 不容易从