一个字符串s="1245"这个字符串不是固定的,是一个变量
列举出所有的的组合数据
例如
1245,1254,1452,1425,1524,1542
2145,2154,2415,2451,2541,2514
4125,4152,4215,4251,4512,4521
5124,5142,5214,5241,5412,5421
-------------------------
import java.util.*;
public class Test{
public static void main(String[] args) {
System.out.println(Arrays.toString(permutation("1234")));
}
private static String[] permutation(String orginal){
ArrayList list = new ArrayList();
if(orginal.length() == 1){
return new String[]{orginal};
} else{
for (int i = 0; i < orginal.length(); i++) {
String s = orginal.charAt(i) + "";
String result = "";
String resultA = result + s;
String leftS = orginal.substring(0, i) + orginal.substring(i + 1, orginal.length());
for (String element : permutation(leftS)) {
result = resultA + element;
list.add(result);
}
}
return (String[]) list.toArray(new String[list.size()]);
}
}
}
-------------------------
package csdn;
import java.util.ArrayList;
import java.util.List;
public class dg {
public static void main(String[] args) {
String s="1245";//原字符串
List<String> result = new ArrayList<String>();//存放结果信息。
list(s, "", result);//列出字符的组合,放入result
System.out.println(result.size());;
System.out.println(result);
}
/**
* 列出基础字符串(base)的所有组合
* @param base 以该字符串作为基础字符串,进行选择性组合。
* @param buff 所求字符串的临时结果
* @param result 存放所求结果
*/
public static void list(String base,String buff,List<String> result){
if(base.length()<=0){
result.add(buff);
}
for(int i=0;i<base.length();i++){
list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result);
}
}
}
分享到:
相关推荐
这段代码首先定义了一个名为`perms_recursion`的递归函数,接收两个参数:一个是要排列的元素个数,另一个是当前的排列。当n等于1时,表示已经完成一个排列,所以直接打印;否则,遍历剩余的元素,将每个元素放到首...
通过分析和理解这段代码,你可以进一步了解如何使用非递归方法生成全排列,以及如何处理动态添加元素的情况。代码可能涉及到循环、条件判断、数组操作等基本编程概念,通过学习和实践,可以提升对全排列算法的理解和...
这段代码中,`ArrayPermutation` 类包含了一个类方法 `fullPermutations:`,它接受一个数组并返回所有可能的排列。核心逻辑在 `permuteArray:withCurrent:toArray:` 方法中,这是一个递归方法,用于生成全排列。在 `...
这段代码的核心是`fullPermutation`函数,它接受一个整数数组和两个索引,表示当前处理的起始位置和结束位置。通过递归,函数将依次尝试每个元素作为当前排列的第一个元素,并对剩余元素进行递归调用。每次递归完成...
这段代码展示了如何使用递归和回溯算法解决字符串全排列问题。对于较长的字符串,这种方法可能会效率较低,因为它会生成大量重复的排列。在实际应用中,可以考虑使用其他算法,如记忆化搜索或字典树等,以提高效率。...
这段代码实现了上述讨论的所有关键点。它首先定义了一个名为 `PermutationsII` 的类,包含两个主要方法:`permuteUnique` 和 `backtrack`。`permuteUnique` 方法负责初始化所需的变量,并调用 `backtrack` 方法来...
这段代码首先定义了一个名为`permute`的递归函数,用于生成全排列。函数接受一个整数向量`nums`和一个开始索引`start`。当`start`等于`nums`大小减一时,说明已经到达数组末尾,此时输出当前排列。否则,遍历从`...
这段代码定义了一个名为`permute`的函数,接受一个整数向量和两个指针,表示当前处理的起始位置和结束位置。当起始位置等于结束位置时,表示找到了一个排列,将其输出。否则,对起始位置到结束位置之间的每个元素...
**解析**:这段代码的核心在于递归函数`rank()`。首先检查基本情况:如果字符串长度为1或更少,直接输出结果。否则,遍历字符串中的每一个字符,并递归地调用`rank()`函数处理剩下的部分。这种方式可以正确地生成...
这段代码首先定义了一个`permute`函数,它接受一个数据数组和一个前缀数组。当数据数组为空时,表示已经完成了一种排列,此时将前缀数组连接成字符串并输出。否则,遍历数据数组,对每个元素执行递归调用,将当前...
通过阅读和理解这段源码,开发者不仅可以学习到如何在易语言中实现全排列,还可以了解到递归或回溯法在解决问题时的应用,以及如何使用易语言处理数组和字符串数据。这对于提高编程技能和理解算法原理有着重要的实践...
在这段代码中,`p`函数负责递归求解全排列,`print_result`函数用于打印结果,而`swap`宏则用于交换数组中的两个元素。在`main`函数中,初始化了一个整型数组`array`,并计算其长度,然后调用`p`函数开始递归求解...
这段代码会打印出以下结果: ``` (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) ``` 在蓝桥杯的Python模拟赛题中,可能会遇到的具体问题是要求求解特定条件下的全排列,比如限制某些元素不能相邻,...
这段代码首先定义了一个`GeneratePermutations`方法,它接受一个数组、起始索引和一个结果列表。当起始索引等于数组长度减一时,表示当前排列已经完成,将其添加到结果列表中。否则,遍历数组中剩余的元素,通过交换...
这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 function ...
这个“js代码-10.1 全排列问题”可能是一个教程或者示例,旨在帮助学习者理解如何用JS实现全排列。 全排列是指从n个不同元素中取出m个元素(m≤n),按照一定的顺序排成一列的所有可能的方法。当m等于n时,这就是...
这段代码将输出所有由'a', 'b', 'c', 'd'组成的长度为4的排列。 2. 递归实现全排列: 递归是一种解决问题的方法,它将问题分解为更小的子问题,直到子问题变得足够简单可以直接解决。在全排列问题中,我们可以利用...
这段代码展示了如何通过递归生成全排列。在main方法中,我们初始化了一个数组{1, 2, 3, 4},然后调用fullSort方法生成所有可能的全排列。 4. **算法复杂度** - 该算法的时间复杂度是O(n!),因为存在n!种全排列,每...