如何计算 4x3 数组中的所有可能结果? [关闭]
Posted
技术标签:
【中文标题】如何计算 4x3 数组中的所有可能结果? [关闭]【英文标题】:How to calculate all possible results in a 4x3 array? [closed] 【发布时间】:2019-05-22 06:13:11 【问题描述】:假设数组看起来像这样。
var res = [2,4,1,6,
1,1,2,8,
5,6,7,1];
这个数组所有可能的四个象限组合都是 81。
在这个例子中,我们只有一个索引组合:4,5,2,11,即四个 1。
我的问题是如何计算它们。
谢谢。
【问题讨论】:
您想要在 js、c# 还是在 vb.net 中获得答案? 我没有问题,但我更喜欢 vb 或 js。 这不是一个“请为我写一些代码”的论坛。请选择一种语言,自己尝试实现,如果您在提出可行的实现时遇到问题,请在此处提出包含您尝试的问题。 抱歉,我是新来的,我不知道该如何发布我的问题。 您好,欢迎来到 Stack Overflow!在这里,我们更喜欢有一些研究/尝试的问题,以避免太长/宽泛的答案,并能够提供尽可能准确的答案。请花点时间拨打Tour 并阅读How do I ask a good question? 以了解有关该网站如何运作的更多信息。一个好的阅读也是What topics can I ask about here?谢谢你,祝你好运! 【参考方案1】:我不完全清楚您要达到的目标。你想找到长度正好为 4 的每个子集,其中包含所有相同的值吗?如果是这样,您可以使用以下简单算法在 N^2 时间内完成此操作:
let quadrants = [];
res.forEach(checkElement =>
let possibility = [];
res.forEach((element, index) =>
if (element === checkElement)
possibility.push(index);
);
if (possibility.length === 4)
quadrants.push(possibility);
);
如果您想考虑原始数组有超过 4 个相同数字的可能性并包括 所有 子集象限,则需要将长度检查更改为 >=4
和在此末尾再添加一步:计算所有列出的长度大于 4 的象限的幂集,过滤掉长度不为 4 的象限,然后将它们连接到象限数组。 (在计算其幂集之前,您需要从 quadrants 数组中删除长度 > 4 的每个象限,因此它不会出现在最终结果中。)
如果你这样做,你也许可以通过只计算较长象限的长度为 4 的子集来优化最后一步;如果需要,请尝试将此作为指南:https://www.geeksforgeeks.org/print-subsets-given-size-set/
【讨论】:
这段代码对我帮助很大,但并不是我想要的。但它可以帮助我编写自己的代码。非常感谢。以上是关于如何计算 4x3 数组中的所有可能结果? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章