如何计算 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 数组中的所有可能结果? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 ListBox 中的数字 [关闭]

我应该如何设置这个 c++ 问题?我不需要为我解决它,但是朝着正确的方向前进会很好

基本概念——张量会话计算图

循环中的数组修改

将地理编码器结果保存到数组 - 关闭问题

在Javascript中使数组中的所有数字成为绝对值[关闭]