当前位置: 首页 > 面试题库 >

该算法将采用数字或单词并找到所有可能的组合

段干英杰
2023-03-14
问题内容

我正在寻找一种算法,该算法将采用数字或单词并一起找到它们的所有可能变体,还让我定义要一起查找的值。

示例以字符串或数组为例:

cat  
dog  
fish

那么值2的结果可能是:

cat dog  
cat fish  
dog cat  
dog fish  
fish cat  
fish dog

因此,来自3个项目的结果集是2个匹配结果
与3个匹配结果的6种可能变化:

cat dog fish  
cat fish dog  
dog cat fish  
dog fish cat  
fish cat dog  
fish dog cat

…甚至更多的选择

我在Stackoverflow上找到了一个指向此示例的链接,该链接执行此操作,但它在javascript中,我想知道是否有人知道如何在PHP中执行此操作,也许已经建立了某些东西?

http://www.merriampark.com/comb.htm
(无效链接)


问题答案:

看看http://pear.php.net/package/Math_Combinatorics

<?php
require_once 'Math/Combinatorics.php';
$words = array('cat', 'dog', 'fish');
$combinatorics = new Math_Combinatorics;
foreach($combinatorics->permutations($words, 2) as $p) {
  echo join(' ', $p), "\n"; 
}

版画

cat dog
dog cat
cat fish
fish cat
dog fish
fish dog


 类似资料:
  • 假设数组是,现在获取此数组的所有子数组。对于每个子数组,在该子数组中找到最小值,也找到该子数组中的项目之和。最后添加所有这些值。输入无法按我想要的所有可能的子数组进行排序。 例子: 可能的子阵列包括: 最后,将所有这些值相加,得到结果=1 3 6 4 10 9=33。 约束:数组元素的范围从1到1000\u 000\u 000。数组大小从1到100\u 000。将输出作为模块7 1000\u 00

  • 问题内容: 从最小和最大长度值的给定数组中获取所有可能的字符串组合的最佳算法是什么? 注意:这增加了复杂性,因为值是可变的,与链接到的问题不同。 例如: 问题答案: 几乎是基本转换 此解决方案是出于以下观察的目的:如果不是为了在有效组合的高位位置重复数组索引0处的字符,则此问题将只是从十进制到新的基数的基数转换。从0到(base ^ length)-1的所有整数。所以, 困难在于,它会错过与一个或

  • 问题内容: 我需要获取数组的所有可能的子集,其中至少要包含2个项目,而最大未知数。有人可以帮助我一点吗? 说我有这个… …我怎么得到这个? 问题答案: 窃取此JavaScript组合生成器后,我添加了一个参数以提供最小长度,从而, 要使用,提供一个数组以及所需的最小子集长度, 输出是

  • 问题内容: 当我尝试做这样的事情时,我意识到我真的需要上大学! 无论如何,我都有一个字符串数组(275),我需要遍历它们并用Java创建所有可能对的字符串。 我一直在学习递归,但是我找不到答案。 问题答案: 如果对和不同,请执行以下操作: 如果没有,请执行以下操作: 请注意,我假设数组包含唯一的字符串!

  • 我正在尝试构造一个程序,该程序将获取一个int({1,2,3})数组和一个长度值,并计算该数组的所有可能组合。 例如: 这将输出: 但是当我尝试在 for 循环中调用可能的梳子时,我不断收到堆栈溢出错误 }

  • 我有一个数字数组,现在我必须通过生成给定数组的所有可能子数组并应用一些条件来找到元素之和。 条件是,对于每个子阵列,获取最小值,并找到其中的元素总数,然后将两者相乘(最小值*总数)。最后,将所有子阵列的所有这些相乘值相加。 以下是问题陈述: 使用下面的公式找到所有可能的子数组的总和: 和(左,右)=(最小的arr[i]) * (∑ arr[i]),其中i的范围从左到右。 例子: 子数组是:[sta