jjzjj

permutation

全部标签

php - 如何使用 PHP 以任意顺序(12 个字母,其中 6 个字母组成一个单词)进行字符搜索?

我整天都在考虑这个问题,但似乎无法找到一种内存高效且快速的方法。问题是:例如,我有这些字母:efjlnrrttuwx(12个字母)我在找这个词乌龟(6个字母)我如何用php找到全范围(12个单词)中所有可能的单词?(或者使用python,是否会更容易?)我尝试过的事情:使用排列:我使用排列算法使所有字符串成为可能,将它们放入数组(只有6个字符长)并执行in_array以检查它是否与我的数组中的某个单词匹配且有效单词(在这种情况下,包含TURTLE,但有时包含两个或三个单词)。这种计算会耗费大量内存和时间,尤其是要对6个以上的字符进行排列时。创建一个正则表达式(我不擅长这个)。我想创建一

PHP计算二维数组的每个排列

几天来我一直在寻找和摸索,但我进退两难。在我之前的所有代码运行之后,我剩下这个数组:Array([0]=>Array([0]=>1[1]=>3)[1]=>Array([0]=>6[1]=>7[2]=>8)[2]=>Array([0]=>9[1]=>10))我需要做的是计算所有键的所有可能排列。所需的输出需要可以作为单独的记录轻松插入,或者最好是批量插入到sql数据库中。在四处寻找之后,我尝试了无数的例子。我得到的最接近的是使用内爆函数,但这仍然行不通。非常感谢任何帮助!--编辑--这是返回数组的示例:Array([0]=>1,6,9[1]=>1,6,10[2]=>3,6,9[3]=>3

php - "Unfolding"一个字符串

我有一组字符串,每个字符串都有可变数量的段,由管道(|)分隔,例如:$string='abc|b|ac';每个超过一个字符的段都应该扩展为所有可能的一个字符组合,对于3个段,以下“算法”非常有效:$result=array();$string=explode('|','abc|b|ac');foreach(str_split($string[0])as$i){foreach(str_split($string[1])as$j){foreach(str_split($string[2])as$k){$result[]=implode('|',array($i,$j,$k));//more

python中全组合函数(combinations)与全排列函数(permutations)的介绍与参数说明

概要:在平常的编程过程中,往往需要面对排列组合的应用情况,而每次自己编写相应的函数会耗费较多的时间,而python中的itertools库就为我们解决了这个小问题。itertools库中的permutations函数可以输出可迭代对象的全排列情况,而combinations函数可以输出可迭代对象的全组合情况。正文部分:print("祝大家每天快乐,loveandpeace!")1、全排列函数permutations()①使用前准备:permutations函数作为itertools库中的函数,要使用它,自然首先要调用itertools库了。(python自带,不需自己另外安装)importit

php - 为什么Heap的算法会出现重复

我想从数组元素中获取所有排列。源数组非常简单:$arr=[1,2,3,4];我为实现Heap'salgorithm编写了代码,privatefunctionmixture($size,array$collection){$permutations=[];$offset=$size-1;if(1===$size){$permutations[]=implode('-',$collection);return$permutations;}for($i=0;$imixture($offset,$collection));$j=(0==$size%2)?$i:0;$tmp_el=$collec

php - 我可以使用 PHP 随机字符串随机播放获得的不同字符串的数量

我目前运行一个名为http://nn.pe的URL缩短网站,并在此代码中使用6个字符的随机哈希,$charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';returnsubstr(str_shuffle($charset),0,6);我想知道有多少不同的字符串使用这些字符和整数?你不需要很精确,我猜在一百万以内。 最佳答案 警告我刚刚在PHP5.3.8源代码中查找了它。使用php_rand()。这是rand()的C等价物。我会非常小心str_s

php 洗牌

我想用php创建随机桥牌的集合。我认为我可以将一副有序的纸牌编码为下面的字符串$deal(考虑到大写和小写时,我喜欢它有52个字母)。我发现了php函数str_shuffle。所以我想我可以做到以下几点:$pack='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';$shuffledPack=str_shuffle($pack);这给了我想要的输出。我的问题是:str_shuffle是否为每个可能的排列提供遵循均匀分布的输出? 最佳答案 在内部,str_shuffle()使

java - java中的高效排列算法

我正在尝试编写一种方法来计算幂集的所有排列,其中顺序很重要。我相信这些被称为“安排”。我的意思是:{a}->{{a},{}}{a,b}->{{a,b},{b,a},{a},{b},{}}{a,b,c}->{{a,b,c},{a,c,b},{b,a,c},{b,c,a},{c,a,b},{c,b,a},{a,b},{a,c},{b,a},{b,c},{c,a},{c,b},{a},{b},{c},{}}等我的印象是,给定一个集合S,我应该生成S的幂集的每个子集的每个排列。所以首先生成幂集,然后将置换函数映射到每个集合。问题是这非常复杂——类似于O(∑n!/k!)且k=0..n。我想知道是

java - Java 中的字符串排列(非递归)

我是一名10年级的高中生,正在尝试解决有关Java的数据结构和算法书中的一些问题。其中一个问题是打印字符串的所有排列。classC14{publicstaticvoidmain(chara[]){//char[]a={'c','a','r','b','o','n'};intc=0,w=0;for(intq=0;q这是我的尝试。这本书要求我为字符“c”、“a”、“r”、“b”、“o”、“n”做这件事。我的解决方案就是这样做的,但是当我尝试使用3或4个字母的单词时,它会重复出现。如果我删除最外层的循环并尝试打印它,它适用于3和4个字母的单词,但不适用于5个以上字母的单词。我很乐意澄清我的理

java - 堆的算法

试图重现Heap的算法,以生成整数数组的所有可能排列,但我无法解决除三个以外的其他整数的问题。Heap的算法来自维基百科:proceduregenerate(N:integer,data:arrayofany):ifN=1thenoutput(data)elseforc:=1;c我的代码:publicstaticvoidperm(int[]list,intn){if(n==1){System.out.println(Arrays.toString(list));}else{for(intc=1;c我做错了什么和误解了它?为什么它仅适用于[1,2,3](n=3)作为输入,而不适用于n=2