问题标签 [integer-partition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java中的整数分区
这是我执行此操作的代码。它适用于字符串表示,但不是那个ArrayList<ArrayList<Integer>>
。
我用 temp1 做有趣的事情的原因是,如果我只是将 temp 添加到 master,以前的元素会改变(master 中的所有元素都是指向同一个地方的引用)所以这是我深入的尝试复制+清除。
字符串有效。为什么不ArrayList<ArrayList<Integer>>
呢?我该如何解决?
的输出ArrayList<ArrayList<Integer>>
是:
algorithm - 整数分区(算法和递归)
求和数的多少组合(代码中的变量n)。例如:
3 = 1+1+1 = 2+1 = 3 => ANS 为 3
5 = 5 = 4+1 = 3+2 = 3+1+1 = 2+2+1 = 2+1+1+1 = 1+1+1+1+1 => ANS 为 7
在下面的例子中,m是最大数并且n
是 sum,目的是找出它有多少个(sum)组合。
我只想知道为什么要这样做p(n, m) = p(n, m - 1) + p(n - m, m)
?
这里的代码:
赞赏!
python - 给定 k 个分区的 Python 整数分区
我正在尝试为 Python 查找或开发整数分区代码。
仅供参考,整数分区将给定整数 n 表示为小于 n 的整数之和。例如,整数 5 可以表示为4 + 1 = 3 + 2 = 3 + 1 + 1 = 2 + 2 + 1 = 2 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1
我为此找到了许多解决方案。http://homepages.ed.ac.uk/jkellehe/partitions.php和http://code.activestate.com/recipes/218332-generator-for-integer-partitions/
但是,我真正想要的是限制分区的数量。
说,# of partition k = 2,一个程序只需要显示5 = 4 + 1 = 3 + 2
,
如果k = 3,5 = 3 + 1 + 1 = 2 + 2 + 1
algorithm - 按其编号生成整数分区
我正在尝试生成按字典顺序N
编号的给定整数的体面分区K
,例如 N = 5, K = 3
我们得到:
第三个是1 + 1 + 3
。如何在不生成每个分区的情况下生成它(用 C 语言,但最重要的是我需要算法)?
寻找分区中的最大数(假设我们可以找到分区数d[i][j]
,其中i
是 number 并且j
是其分区中的最大整数),然后减少我们正在寻找的原始数和数。所以是的,我正在尝试使用动态编程。仍在处理代码。
这根本不起作用:
c - 查找整数分区的字典顺序
对于排列,给定N
和k
,我有一个函数可以找到按字典顺序k
排列的N
。此外,给定一个 permutation perm
,我有一个函数可以在 的所有排列中找到该排列的字典索引N
。为此,我使用了此答案中建议的“因子分解” 。
现在我想对N
. 例如,对于N=7
,我希望能够在索引(左)和分区(右)之间来回切换:
我已经尝试了几件事。我想出的最好的是
这给出了以下内容:
这不太奏效,但似乎在正确的轨道上。我想出这个是因为它可以计算我必须将数字向下移动多少次(例如6,3,2
go to 6,3,1,1
)。但是,我不知道如何解决它,因为我不知道如何解释何时必须重新组合(例如6,3,1,1
go to 6,2,2
)。
c++ - 整数的分区 + 分区数
整数 n 的分区是将 n 写为正整数之和的一种方式。为了
例如,对于 n=7,一个分区是 1+1+5。我需要一个能找到所有
使用 'r' 整数对整数 'n' 进行分区。例如,所有的分区n=7
使用r=3
整数是1+1+5
, 1+2+4
, 1+3+3
, 2+2+3
.
这是我到目前为止所拥有的:
这个程序的输出是:
如何更改我的代码,以便我可以拥有那个 'r' 变量?
编辑:
如果不清楚,“r”值表示每个分区的整数数。所以在上面的例子中,如果 r=2,那么分区中只能有两个整数。分区将是 4+1 和 3+2。'r' 值应由用户输入。
java - 整数分割算法的递归方法
我需要通过所涉及的元素数 (M) 找到数字 (N) 的可能分区之一,如下所示:
我需要创建一个函数 P(N, M),它将为调用 P(4, 2) 返回以下结果:
我创建了以下方法,但我找不到打破每个分区之间界限的方法:
代码再次更新。现在我使用字符串来返回元素并且我已经能够达到预期的结果,但是我试图找到一个不使用字符串来返回分区的解决方案,所以我不需要使用字符串拆分功能。
c++ - 就地共轭整数分区
我正在构建一个包含 Partitions 类的 C++ 库。我正在尝试就地实现共轭(如下所述),但我无法让它发挥作用。
我的班级成员是:
例如,整数分区[5,4,4,1]
有
如果分区是[m_1,m_2,...,m_k]
,那么共轭[n_1,n_2,...,n_l]
是
例如, 的共轭[5,4,4,1]
是[4,3,3,3,1]
。另一种看待这一点的方法是将分区绘制为单位正方形的行,其中i
第 th 行中的正方形数量为m_i
。读取列的高度然后给出共轭。对于同一个例子,图片是
数学转换为编程语法m_i = _parts[i-1]
和k = _length
. 这是共轭的一个损坏的实现:
这在很多时候都有效,但有时它会覆盖仍然需要的部分分区。我正在寻找一种巧妙的方法来进行适当的共轭,即不创建Partition
.
考虑共轭的另一种方法是认识到共轭是以下序列
使用这个想法,我有以下实现,它给出了正确的答案:
但是,它使用另一个标准向量,我试图避免。
根据 Evgeny Kluev 的回答(在下面接受),这是有效的最终代码(有关详细信息,请参阅他的回答):
algorithm - 计算数字的不同方法
我需要编写一个函数,该函数将返回可以将 n(n 是自然数)写为自然数之和的方式数。例如:4可以写成1+1+1+1、1+1+2、2+2、3+1和4。我写了一个函数,返回所有选项的个数,但是不取考虑到可能性 1 + 1 + 2 和 2 + 1 + 1(以及所有类似情况)是相等的。所以对于 n=4 它返回 8 而不是 5。这是我的函数:
您能否帮我修复我的功能,这样它就可以按应有的方式工作。谢谢你。
algorithm - 组合排列组
我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),以便所有分区组件不能占据任何低于排列总长度的位置,以数字为单位,减去值的组件。
(然而,被分割的数字极不可能超过 8,并且排列的长度永远不会超过 7。)
例如,假设我有 4 的分区,“211”,我想在填充为 2 时找到排列,即长度为 5:
这表示为像这样的数组 {2,1,1,0,0}
当 2 在 0 索引中时有 6 个排列(4!/2!2!),并且 2 可以占用 4 个索引(2 不能放在最后一个索引中)所以这种情况下总共有 24 个排列( a 1 可以占用任何索引)。
输入“21100”的输出:
21100、21010、21001、20110、20101、20011
02110、02101、02011、12100、12010、12001
00211、10210、11200、10201、01210、01201
10021、01021、00121、11020、10120 01120
请注意,这只是“21100”的所有排列减去 2 在第 4 个索引中的排列的集合。这是一个比较简单的案例。
该问题可以描述为组合n个不同的排列组,因为上述情况可以表示为x=1 n=4和x=2 n=5的排列组合,其中x是值计数,n是“空间”计数。
我的困难是制定一种可以通过计算获得所有可能性的方法,任何建议都将不胜感激。-请原谅我的问题中的术语混乱。
*算法回答以下问题:
有一组n 个单位被攻击k次。每次攻击都有p次失败的机会和q (1 - p ) 次攻击组中的一个随机单位的机会。第二次损坏的单位将被摧毁并从集合中移除。
攻击后有x 个未损坏单位、y个损坏单位和z个被摧毁单位的概率是 多少?
如果有人知道解决此问题的更直接方法,请告诉我。