`

一段全排列的代码

 
阅读更多

一个字符串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); 
        } 
    } 
} 

 

分享到:
评论

相关推荐

    生成全排列矩阵.zip

    这段代码首先定义了一个名为`perms_recursion`的递归函数,接收两个参数:一个是要排列的元素个数,另一个是当前的排列。当n等于1时,表示已经完成一个排列,所以直接打印;否则,遍历剩余的元素,将每个元素放到首...

    全排列-非递归算法

    通过分析和理解这段代码,你可以进一步了解如何使用非递归方法生成全排列,以及如何处理动态添加元素的情况。代码可能涉及到循环、条件判断、数组操作等基本编程概念,通过学习和实践,可以提升对全排列算法的理解和...

    objective-c数组全排列算法

    这段代码中,`ArrayPermutation` 类包含了一个类方法 `fullPermutations:`,它接受一个数组并返回所有可能的排列。核心逻辑在 `permuteArray:withCurrent:toArray:` 方法中,这是一个递归方法,用于生成全排列。在 `...

    全排列算法

    这段代码的核心是`fullPermutation`函数,它接受一个整数数组和两个索引,表示当前处理的起始位置和结束位置。通过递归,函数将依次尝试每个元素作为当前排列的第一个元素,并对剩余元素进行递归调用。每次递归完成...

    求字符串的全排列

    这段代码展示了如何使用递归和回溯算法解决字符串全排列问题。对于较长的字符串,这种方法可能会效率较低,因为它会生成大量重复的排列。在实际应用中,可以考虑使用其他算法,如记忆化搜索或字典树等,以提高效率。...

    全排列ⅱ(java代码).docx

    这段代码实现了上述讨论的所有关键点。它首先定义了一个名为 `PermutationsII` 的类,包含两个主要方法:`permuteUnique` 和 `backtrack`。`permuteUnique` 方法负责初始化所需的变量,并调用 `backtrack` 方法来...

    C++n个数全排列的算法

    这段代码首先定义了一个名为`permute`的递归函数,用于生成全排列。函数接受一个整数向量`nums`和一个开始索引`start`。当`start`等于`nums`大小减一时,说明已经到达数组末尾,此时输出当前排列。否则,遍历从`...

    全排列生成算法字典序vc++源码

    这段代码定义了一个名为`permute`的函数,接受一个整数向量和两个指针,表示当前处理的起始位置和结束位置。当起始位置等于结束位置时,表示找到了一个排列,将其输出。否则,对起始位置到结束位置之间的每个元素...

    php全排列递归算法代码

    **解析**:这段代码的核心在于递归函数`rank()`。首先检查基本情况:如果字符串长度为1或更少,直接输出结果。否则,遍历字符串中的每一个字符,并递归地调用`rank()`函数处理剩下的部分。这种方式可以正确地生成...

    js代码-sku全排列算法

    这段代码首先定义了一个`permute`函数,它接受一个数据数组和一个前缀数组。当数据数组为空时,表示已经完成了一种排列,此时将前缀数组连接成字符串并输出。否则,遍历数据数组,对每个元素执行递归调用,将当前...

    易语言全排列模块

    通过阅读和理解这段源码,开发者不仅可以学习到如何在易语言中实现全排列,还可以了解到递归或回溯法在解决问题时的应用,以及如何使用易语言处理数组和字符串数据。这对于提高编程技能和理解算法原理有着重要的实践...

    递归实现全排列

    在这段代码中,`p`函数负责递归求解全排列,`print_result`函数用于打印结果,而`swap`宏则用于交换数组中的两个元素。在`main`函数中,初始化了一个整型数组`array`,并计算其长度,然后调用`p`函数开始递归求解...

    蓝桥杯Python模拟赛题之数学问题全排列.zip

    这段代码会打印出以下结果: ``` (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) ``` 在蓝桥杯的Python模拟赛题中,可能会遇到的具体问题是要求求解特定条件下的全排列,比如限制某些元素不能相邻,...

    n个数进行全排列的C#程序

    这段代码首先定义了一个`GeneratePermutations`方法,它接受一个数组、起始索引和一个结果列表。当起始索引等于数组长度减一时,表示当前排列已经完成,将其添加到结果列表中。否则,遍历数组中剩余的元素,通过交换...

    JS实现的数组全排列输出算法

    这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 function ...

    js代码-10.1 全排列问题

    这个“js代码-10.1 全排列问题”可能是一个教程或者示例,旨在帮助学习者理解如何用JS实现全排列。 全排列是指从n个不同元素中取出m个元素(m≤n),按照一定的顺序排成一列的所有可能的方法。当m等于n时,这就是...

    如何通过python实现全排列

    这段代码将输出所有由'a', 'b', 'c', 'd'组成的长度为4的排列。 2. 递归实现全排列: 递归是一种解决问题的方法,它将问题分解为更小的子问题,直到子问题变得足够简单可以直接解决。在全排列问题中,我们可以利用...

    全排列问题(详细介绍加图解)

    这段代码展示了如何通过递归生成全排列。在main方法中,我们初始化了一个数组{1, 2, 3, 4},然后调用fullSort方法生成所有可能的全排列。 4. **算法复杂度** - 该算法的时间复杂度是O(n!),因为存在n!种全排列,每...

Global site tag (gtag.js) - Google Analytics