jjzjj

permutation

全部标签

java - 在 Java 中通过给定的最大汉明距离(不匹配数)获取所有字符串组合

是否有一种算法可以通过给定数量的可以变化的最大允许位置(最大不匹配、最大汉明距离)生成一个字符串(DNA序列)的所有可能的字符串组合?字母表是{A,C,T,G}。字符串AGCC和最大不匹配数2的示例:Hammingdistanceis0{AGCC}Hammingdistanceis1{CGCC,TGCC,GGCC,AACC,ACCC,ATCC,AGAC,AGTC,...,AGCG}Hammingdistanceis2{?}一种可能的方法是生成一个包含给定字符串的所有排列的集合,迭代它们并删除所有具有更大汉明距离的字符串。对于给定的20个字符的字符串和5的最大汉明距离,这种方法非常耗费资

java - 生成一定长度的所有排列

假设我们有一个字母“abcdefghiklimnop”。我怎样才能以一种有效的方式递归地生成排列,以五组为一组重复这个字母表?这几天我一直在为这个问题苦苦挣扎。任何反馈都会有所帮助。本质上这与:Generatingallpermutationsofagivenstring相同但是,我只想要整个字符串长度为5的排列。我一直无法弄清楚这一点。因此,对于“abcdefghiklimnop”的所有长度为5的子串,找到子串的排列。例如,如果子字符串是abcdef,我会想要它的所有排列,或者如果子字符串是defli,我会想要该子字符串的所有排列。下面的代码给了我一个字符串的所有排列,但我想用它来查

java - 查找一组给定数字的所有组合

假设我有一组数字“0”、“1”、“2”、...、“9”。我想找到恰好包含我的集合中每个数字之一的所有数字。问题是:在我开始我的程序之前,我不知道我的集合将包含多少个数字和哪些数字。(例如,集合可以包括数字“1”、“3”和“14”。)我在网上搜索了一下,偶然发现了“动态规划”这个词,它显然是用来解决像我这样的问题的,但我不明白这些例子。有人可以提示我如何解决这个问题(可能使用动态规划)吗?编辑:当集合包含像“14”这样的数字时,集合中的不同数字当然必须通过某种方式分开,例如当集合包含数字“1”、“3”和“14”时,组合可能类似于1-3-14或3-14-1(=由“-”字符分隔的单个数字)。

java - 通过从数组中选择来创建排列

我有一个二维数组,用于存储与您在电话键盘上看到的内容相对应的不同字母。char[][]convert={{},{'A','B','C'},{'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},{'P','R','S'},{'T','U','V'},{'W','X','Y'}};如果我想从二维数组的前5行中各取1个字母,找出5个字母单词的所有可能排列,我该怎么做?我正在考虑递归,但这让我感到困惑。为了让这个问题更容易理解,这里有一个例子:一个3字母单词的第一个字母来自第1行,{'A','B','C'},第二个字母来自第3行,{'G

java - Guava Collection : limit permutation size

使用guava12Collections2.permutations(),我想知道是否可以限制排列的大小?更准确地说,我想获得n元素列表中的k大小排列的列表,而不是获取所有n大小排列的列表。目前,如果我传递一个包含4个水果的列表,permutations()当前将返回一个包含24个4大小排列的列表,尽管我只对检索感兴趣,例如,4个独特的大小为3的排列。假设我有一个包含4种水果的list:["Banana","Apple","Orange","Peach"]如果我只对大小3排列感兴趣,我希望返回以下内容:["Banana","Apple","Orange"]["Banana","Appl

java - 置换 Java 数组中位的最快方法

随机(但重复)置换Java字节数组中所有位的最快方法是什么?我试过用BitSet成功地做到了,但是有更快的方法吗?显然,for循环消耗了大部分CPU时间。我刚刚在我的IDE中做了一些分析,for循环占整个permute()方法中64%的cpu时间。澄清一下,数组(preRound)包含进入过程的现有数字数组。我希望该数组的各个设置位以随机方式混合在一起。这就是P[]的原因。它包含一个随机的位位置列表。因此,例如,如果设置了preRound的第13位,它会被转移到postRound的P[13]位置。这可能在postRound的位置20555。整个事情是置换网络的一部分,我正在寻找置换传入

java - JAVA 字符数组中的特定元素排列?

如何列出字符数组中指定的任何字母的所有大写/小写排列?所以,假设我有一个这样的字符数组:['h','e','l','l','o']我想打印出字母“l”的可能组合,以便打印出[hello,heLlo,heLLo,helLo]。这是我到目前为止所拥有的(唯一的问题是我可以打印排列,但是我无法在实际单词中打印它们。所以我的代码打印[ll,lL,Ll,LL]而不是上面的例子。我的代码:importjava.util.ArrayList;importjava.util.HashSet;publicclassMain{publicstaticvoidmain(String[]args){//Sam

java - 在java中生成没有重复/排列的变体

我必须生成所有不重复数字0-9的变体。它们的长度可以从1到10。我真的不知道如何解决它,尤其是如何避免重复。例子:变化长度:4随机变化:9856、8753、1243、1234等(但不是9985-包含重复)你能帮帮我吗?或者你能给我代码吗? 最佳答案 要查找的关键字是排列。有大量免费的源代码可以执行它们。至于避免重复,我建议采用一种简单的递归方法:对于每个数字,您都可以选择是否将其纳入您的变体中,因此您的递归会通过数字计数并fork为两个递归调用,其中一个数字被包括在内,一个被排除在外。然后,在您到达最后一位数字后,每个递归本质上都会

java - 置换/加扰java中的arraylist元素

假设我有整数数组列表...有没有一种方法可以生成数组列表中元素的随机排列/排列所以如果列表是{1,2,3,4,5,6}调用一些方法randomPermute()会把它变成随机的东西,比如{1,3,2,6,5,4} 最佳答案 Collections.shuffle()做的工作:publicstaticvoidshuffle(Listlist)-使用默认的随机源随机排列指定的列表。所有排列以近似相等的可能性发生。http://download.oracle.com/javase/6/docs/api/java/util/Collecti

java - 获取字符串或组合的所有可能排列,包括 Java 中的重复字符

我一直在尝试生成一个列表,其中包含所有可能的4个字符的字符串,这些字符串可以由任何给定的字符集组成。我使用了一个函数从一组字符中生成每4个字符的组合,但每个字符只使用过一次。我需要使用给定字符集的所有可能组合,例如:String[]elements={"a","b","c","1","2","3"};int[]indices;CombinationGeneratorx=newCombinationGenerator(elements.length,4);StringBuffercombination;while(x.hasMore()){combination=newStringBuf