|
|
1
2
要生成可能重复元素(多集)的k-组合,以下可能有用: A Gray Code for Combinations of a Multiset (1995) . 对于递归解决方案,请尝试以下操作: 计数每个字符出现的次数。假设它们是x1 x2…xm,对应m个不同的字符。 然后你需要找到所有可能的有序对(y1 y2…这样) 0和l=; 和Yi=K。 这里,yi是我出现字符的次数。 其想法是,固定char 1出现的次数(y1)。然后递归地从其余部分生成k-y1的所有组合。 psuedocode:
编辑前: 如果我理解正确的话,你需要看看字符串A,看看恰好出现一次的符号。假设有k个这样的符号。然后,您需要生成所有可能的b排列,其中包含k元素,并在相应的位置映射到这些符号。其余的可以忽略/根据需要填写。 我记得在这里张贴了C代码: How to find permutation of k in a given length? 我假设XXYY只给出1个唯一的字符串,并且恰好出现一次的字符串是“区别”点。
以防万一
区别点是X
所以选择长度为1的“添加”的排列。那些给你
因此
为了
区别点是X和Z 所以你产生长度为2的b排列
给你7个独特的排列。 有帮助吗?我的理解正确吗? |
|
|
2
0
好吧,很抱歉,我一直无法清楚地解释这个问题,但这里有一个解决方案。
我们需要两个功能
为了解决这个问题,我们将使用递归生成器。我们浏览了所有适合框1的组合和对其余框的追索权,禁止我们已经选择的值。为了完成禁令,
在python中,方法如下:
输出为“box”格式,但可以轻松合并回简单字符串:
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 2 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 2 年前 |