- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定两个已排序的向量 a
和 b
,找出所有包含 a
和 b
的排列之和的向量code>,并且一旦排序,它们是唯一的。
您可以通过以下方式创建其中一个寻求的向量:
a
和向量 b
的排列。c[i]=a[i]+b[i]
。c
进行排序。我感兴趣的是找到一组 b
-permutations 产生整组独特的 c
向量。
示例 0:a='ccdd'
和 b='xxyy'
给出求和向量:'cycydxdx'
、'cxcxdydy'
、'cxcydxdy'
。
请注意 b
的排列:'xyxy'
和 'yxyx'
是相等的,因为在这两种情况下“box c”和“框 d"都恰好得到一个 'x'
和一个 'y'
。
我想这类似于将 M
个球放入 M
个盒子(每个盒子一个),其中一些球组和盒子是相同的。
更新:给定一个字符串 a='aabbbcdddd'
和 b='xxyyzzttqq'
你的问题是 4 个盒子里有 10 个球。有 4 个不同的盒子,大小分别为 2、3、1 和 4。球是成对的,无法区分。
示例 1:给定的字符串是 a='xyy'
和 b='kkd'
。
可能的解决方案:'kkd'
、'dkk'
。
原因:我们看到 b
的所有唯一排列是 'kkd'
、'kdk'
和 'dkk'
。然而,在我们的限制下,前两个排列被认为是相等的,因为不同的索引映射到字符串 a
中的相同字符 'y'
。
示例 2:给定的字符串是 a='xyy'
和 b='khd'
。
可能的解决方案:'khd'
、'dkh'
、'hkd'
。
示例 3:给定的字符串是 a='xxxx'
和 b='khhd'
。
可能的解决方案:'khhd'
。
我可以使用 Narayana Pandita 算法解决生成唯一候选 b
排列的问题,如 Wikipedia/Permutation 中所述.
第二部分接缝更难。我最好的办法是将两个字符串成对地连接到一个列表中,对其进行排序并将其用作查找集中的键。 ('xx'
+'hd'
加入→'xh','xd'
排序→'xd','xh'
)。
由于我的 M
通常非常大,并且字符串中的相似性很常见,因此我目前生成的 b
排列比实际通过 set 过滤器的排列要多得多。我希望有一种算法可以直接生成正确的算法。欢迎任何改进。
最佳答案
要生成可能重复元素的 k 组合(多重集),以下内容可能会有用:A Gray Code for Combinations of a Multiset (1995) .
对于递归解决方案,您可以尝试以下操作:
计算每个字符出现的次数。假设它们是 x1 x2 ... xm,对应于 m 个不同的字符。
然后你需要找到所有可能的有序对 (y1 y2 ... ym) 使得
0 <= yi <= xi
和 yi = k。
这里yi是字符i出现的次数。
想法是,固定字符 1 出现的次数 (y1)。然后从剩下的递归生成k-y1的所有组合。
伪代码:
List Generate (int [] x /* array index starting at 1*/,
int k /* size of set */) {
list = List.Empty;
if (Sum(x) < k) return list;
for (int i = 0; i <= x[1], i++) {
// Remove first element and generate subsets of size k-i.
remaining = x.Remove(1);
list_i = Generate(remaining, k-i);
if (list_i.NotEmpty()) {
list = list + list_i;
} else {
return list;
}
}
return list;
}
编辑之前:
如果我没理解错的话,你需要查看字符串a,查看恰好出现一次的符号。假设有 k 个这样的符号。然后你需要生成 b 的所有可能的排列,其中包含 k 个元素并映射到相应位置的那些符号。其余的您可以根据需要忽略/填写。
我记得在这里发布了 C# 代码:How to find permutation of k in a given length?
我假设 xxyy 只会给出 1 个唯一的字符串,而恰好出现一次的字符串是“区别”点。
例如 a=xyy, b=add
区别点是x
因此,您选择长度为 1 的“add”的排列。它们为您提供 a
和 d
。
因此 add
和 dad(或 dda)
是您需要的。
对于 a=xyyz b=good
区别点是x和z
所以你生成长度为 2 的 b 的排列
go
og
oo
od
do
gd
dg
为您提供 7 种独特的排列方式。
这有帮助吗?我的理解正确吗?
关于algorithm - 在盒子里生成球,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073622/
我有一个设计。我在这里遇到一个问题。 我要做的是,我必须显示前 3 个 li 标签的 100% 宽度,并保留 li 标签的 33.33%。 这是我的预期输出 li-100% width li-100%
用例: 对于我的 angularJS(1.6.4) 应用程序,我正在用 jasmine 编写单元测试。 在我的测试用例中,我调用了一个 poll() 函数,该函数使用 $interval 反复调用另一
如何在 hookdisplayTop 中获取当前产品? 这是我确保我在“产品”页面中的当前方式: if ( Dispatcher::getInstance()->getController() ==
我有一个带有“li”-s 的导航菜单。我想像这样把这个 li 变成六 Angular 形: 我该怎么做? 最佳答案 我会使用带边框的伪元素。 * { margin: 0; paddin
我是 JQuery 的新手。我试图基本上允许访问者在我的网站上的两种颜色主题之间进行选择。当他们单击浅色主题的链接时,除了我的导航菜单中的各种元素外,所有内容都会按预期改变颜色。这是 JQuery:
所以我试图在我的 Accordion 中的一些文本下面实现一个日期。 文本和图像由用户插入到 wordpress 的文章部分,日期应始终显示在文本下方。但是一直报错,一直在1970。 下面的代码:
我需要在一段时间内将测试数据提供给 Swing 间隔。数据集需要很长时间才能解析,所以我使用 SwingWorker 在后台解析它。在将数据馈送到 GUI 时(例如,每秒一个项目),我可以从 Swin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 prev next function showPage(page) { var listItems =
里?
我有一个小程序,其中有冰淇淋口味列表,计算机使用“console.log();”打印一个句子和味道。我已经开始了这个项目,它看起来像这样: var randomFlavour = Math.rando
我想创建自定义 toast,其中一个 View 有点脱离父 View 。所以我做了这样的事情 这是我定制的 toast round_button.xml
在过去的 6 个月里,我一直在从 repl 运行我的 Clojure 应用。 也就是说,每当我想运行该应用程序时,我都会加载一个 clojure repl,然后输入:(load-file "src/r
我想在我的网页的整个主体周围添加一个边框。 我创建了一个布局,其中包含一个主体,其中包含多个 div 标签。我添加了我认为会在所有内容周围放置边框的 CSS。不幸的是,出于某种原因,我布局中的最后两个
我有一个无序列表 (ul),我正在尝试制作 3 列。当我有 4 个 li's 时,它只显示 2 列。我怎样才能让它有 3 列和 4 个 li ? 此外,我希望 li 从左到右,而不是从上到下,如下所示
我目前正在使用 JPA 创建一个批处理,其层次结构为 Tasklet-> 访问器-> 服务-> 处理器,并且我正在使用 Glassfish 作为我的数据库。但当我运行时` [ERROR] [com.a
到目前为止我有这个: $(".actor ul li").not($(".actor ul li").slice(0,11)).hide(); 我还想从 hide() 中排除最后一个 li。我该怎么做
我必须使用 tools.jar 中的库并因此添加了此依赖项: com.sun tools 1.6.0 system ${java.home}/../lib/t
if(BrowserDetect.browser=="safari"){document.write('')} 我可以在 html 文档的底部放置条件注释吗? (在体内)还是应该在头部? 就页面速度
我是一名优秀的程序员,十分优秀!