Tag: 排列

组合和置换算法(递归)

我正在从事Java任务,我绝对难过。 问题是: 使用Recursion编写一个函数来执行以下操作:您有X个不同的卡。 你只有Y信封。 Y小于或等于X.对于任何给定的X和Y值, 显示所有可能的方式,您可以在订单不重要时填写Y信封并且不允许重复。 hint: X! / (( XY)! * Y!) 显示所有可能的方法,您可以在订单重要时填写Y信封,并允许重复hint: X^Y 显示订单重要时可以填写Y信封的所有可能方式,并且不允许重复提示: X! / (X – Y)! X! / (X – Y)! 当订单不重要时,显示所有可能的填充Y信封的方法,并允许重复提示: (X + Y – 1)! / (Y! * (X – 1)!) (X + Y – 1)! / (Y! * (X – 1)!) 例如,在情况(1)下, if X = {J, Q, […]

置换一个字符串

给定String,打印其所有排列。 为此,我提出了以下计划。 public static char[] swap(char[] input, int i, int j) { char temp; temp = input[i]; input[i] = input[j]; input[j] = temp; return input; } /** * * @param args */ public static void permuteStrings(char[] inputString, int start, int finish ) { //Base case: When there is only single element, print the string if(start […]

java – 按字母顺序排列(列表)

可能重复: 按字母排序列表 如何按字母顺序存储输入,我将名称输入到arraylist中: persons.add(person); 怎么做?

在Java中动态生成2个列表的非重复排列对

我一直在看很多关于Java中排列的不同post,但是没有一个符合我的账单,所以我决定发帖。 所以我有2个List ,我需要生成没有重复的所有排列对 ,其中该对的一个元素在第一个列表中,第二个元素在第二个列表中。 例如,如果我有: List l1 = Arrays.asList(new Integer[] {1, 2, 3}); List l1 = Arrays.asList(new Integer[] {2, 3, 4}); 然后我想输出: (1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4) 注意,(3,2)不在这里,因为我已经有(2,3) 我找不到任何库甚至远程关闭的东西,我发现guava与Permutations有类似的东西,但似乎最近已经停产或其他东西。 此外,我不想将列表存储在内存中,因为它可能非常大,我只需要一次迭代一对,所以我试图找到生成它们的方法。 我正在考虑实现一个Iterable但我似乎无法编写看起来很有效的东西。 如果你知道那些已经做过这种东西的图书馆也会非常有用!

获取给定字母表的所有4个字符的组合

让我们说alphabet = “abcd1234″我想要所有4位数的组合。 我不想通过所有排列并只选择那些长度为4个字符的字母,因为字母表可能很大。 编辑:这是我到目前为止 String alpha = “abcdefg”; for (int i = 0 ; i < alpha.length() ; i++) { for (int j = i ; j < alpha.length()-i ; j++) System.out.println(String.valueOf(alpha.charAt(i)) + String.valueOf(alpha.charAt(j)) ); } 不幸的是我只得到一个2个字符的单词。 我不能使用相同的循环结构打印4个字符的单词。

陷入组合问题

我和我的程序有问题。 我已经提取了一组数据,我想测试是否有特定数字的组合。 例如,我有一个int数组,1 2 3 4 5,我想知道是否有7个组合,它必须回答是有3 + 4。 我发现我需要使用组合配方。 所以我认为外环可能像5C1..5C2..5C3..etc,开始“取1”然后“取2”一次找出所有可能的组合。 问题是我坚持如何在实际代码中实现这一点。 我对数学并不是很了解,定义的循环结构确实会有所帮助。 非常感谢提前!

字母表的每个排列最多29个字符?

我正在尝试编写一个程序,该程序将生成一个文本文件,其中包含从一个字符到二十九个字符的字母表的每个可能的排列。 我选择了29作为最长的英语单词,每个人都知道这是一个长度为28个字符的反歧视法。 有更长的,但它们主要是技术性和模糊性。 我意识到这会产生大量的字符串。 但是我不知道从哪里开始,甚至不知道如何计算出这将产生多少组合。 请回答有关PHP, Processing ,C ++或Java的解决方案(我只熟悉那些,PHP是首选,但可能没有最好的,我应该想象)。 或者甚至只是伪代码/想法将不胜感激。 此外,在有人说出来之前,这不是为了暴力强迫或类似的东西。 我是一名艺术家,虽然有点不为人知,但我的概念模糊不清。

智能方式生成排列和String的组合

String database[] = {‘a’, ‘b’, ‘c’}; 我想基于给定的database生成以下字符串序列。 a b c aa ab ac ba bb bc ca cb cc aaa … 我只能想到一个非常“虚拟”的解决方案。 public class JavaApplication21 { /** * @param args the command line arguments */ public static void main(String[] args) { char[] database = {‘a’, ‘b’, ‘c’}; String query = “a”; StringBuilder query_sb = new […]

字符串的排列

public class Permute { public static void main(String[] args) throws IOException { System.out.println(“Enter a string”); BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); String text = bufReader.readLine(); shuffle(“”,text); } public static void shuffle(String dummy, String input){ if(input.length() <= 1) System.out.println(dummy+input); else{ for(int i=0; i <input.length();i++){ input = input.substring(i,1) + input.substring(0,i) + input.substring(i+1); shuffle(dummy+input.substring(0,1),input.substring(1)); } } } } […]

在Java中重复排列数组

在网站上有一些类似的问题已经有所帮助,但我不能完全解决这个问题,所以我希望这不是重复的。 这是一个家庭作业,你有一组字符[A,B,C],并且必须使用递归来获得所有的排列(重复)。 我有的代码是这样做的: char[] c = {‘A’, ‘B’ , ‘C’}; public void printAll(char[] c, int n, int k) { if (k == n) { System.out.print(c); return; } else { for (int j = 0; j<n; j++) { for (int m = 0; m<n; m++) { System.out.print(c[k]); System.out.print(c[j]); System.out.print(c[m] + "\r\n"); } } } printAll(c, n, […]