`

Java打印全排列

 
阅读更多
	public static void permute(char[] str, int start) {
		int length = str.length - 1;
		if (start > length) {
			System.out.println(str);
		} else {
			for (int i = start; i <= length; i++) {
				char[] temp = str.clone(); // temp will be str
				temp[i] = str[start]; // with i and low
				temp[start] = str[i]; // swapped
				permute(temp, start + 1);
			}
		}
	}
        permute(new char[]{'a','b','c'},0);


这个好理解一些
	public void printAll(List candidate, String prefix) {
		if (candidate.size() == 1) {
			System.out.println(prefix + candidate.get(0));
		} else {
			for (int i = 0; i < candidate.size(); i++) {
				List temp = new LinkedList(candidate);
				printAll(temp, prefix + temp.remove(i));// 递归调用
			}
		}
	}
        printAll(list,"");
        
分享到:
评论

相关推荐

    全排列算法部分算法需要自己优化修改

    1. 当`start`等于`end`时,表示已经完成了一个排列,此时打印或记录这个排列。 2. 对于`start`到`end`之间的每个元素,将其与`start`位置的元素交换,然后递归处理剩余的子问题,即调用`fullPermutation(arr, start+...

    FullPermutation_java_算法_全排列_

    在Java编程中,实现全排列通常涉及到递归或回溯等技术。本篇将详细介绍两种常用的Java方法来解决全排列问题,并探讨相关知识点。 ### 1. 递归法 递归法是一种自上而下解决问题的方法,它通过调用自身来解决子问题...

    JAVA用递归实现全排列算法的示例代码

    "JAVA用递归实现全排列算法的示例代码" JAVA用递归实现全排列算法的示例代码主要介绍了JAVA用递归实现全排列算法的相关资料。全排列算法是一种经典的算法,在数学和计算机科学领域中有着广泛的应用。该算法的主要...

    重复元素全排列

    在Java中实现重复元素全排列,通常采用递归的方法。核心思想是通过交换元素的位置来生成不同的排列组合,并检查每次交换是否产生了一个新的、未被记录的排列。为了避免重复计算,可以使用一个辅助函数`Judge()`来...

    全排列算法实现(java\c#\c++,各种主流语言版本)

    在本例中,我们将讨论如何使用递归方法实现全排列,以Java、C#、C++等主流编程语言为例。 全排列算法的核心思想是通过递归地交换元素来生成所有可能的序列。假设我们有一个包含n个不同元素的数组,全排列的数量是n...

    全排列和棋盘覆盖的java实现代码

    在Java中,我们可以使用递归的方式来实现全排列。递归的基本思路是,对于n个元素的全排列问题,我们先选择一个元素作为排列的第一个,然后对剩下的n-1个元素进行全排列。这样,每次递归调用都会解决规模更小的问题,...

    java编写的递归算法的经典事例

    ### Java编写的递归算法的经典事例:全排列输出 #### 概述 本文将详细介绍一个用Java编写的递归算法实例,该实例用于实现字符数组的所有可能全排列。通过这个例子,我们可以深入理解递归的基本概念、工作原理以及...

    输出n个字符的全排列(没有重复字符)

    简单的实现,代码很短。 输入一个字符串,输出它的字符的所有组合的情况 如输入“abc”,则输出abc,acb,bac,bca,cab,cba。 但如果输入“aba”,即有重复的,也会输出aba,aab,baa,baa,aba,aab。

    Leetcode Top100题目和答案(Java完整版 面试必备).zip

    PDF格式便于阅读和打印,使得学习者可以随时随地进行学习。 而一系列的.png图片文件,根据它们的顺序,可能是每个问题的截图或者解题流程图。这些图片可能包含问题描述、代码片段或者解题步骤的可视化表示,对于...

    Java解决分书问题

    Java中可以使用递归或者回溯法来实现全排列。 以下是使用递归实现全排列的伪代码: 1. 定义一个递归函数`permute()`,接收两个参数:剩余书籍列表和当前分配方案。 2. 基本情况:如果剩余书籍为空,则打印当前分配...

    java 中的经典递归

    #### 三、Java中经典递归示例——全排列问题 本节将通过一个具体的Java代码示例来详细介绍递归的应用,该示例实现了字符数组的全排列问题。 ```java public class AllSort { public static void main(String[] ...

    2013宜搜java校招笔试内容

    第四题要求在Java的`main`函数中打印出特定条件下的全排列,这涉及到回溯算法或递归的使用。 最后的画图环节虽然与技术直接关联不大,但可能考察应聘者的创造力和艺术感知,以体现个人综合素质。 综上所述,这份...

    蓝桥杯java历年真题及答案

    6. 递归算法的实现:`fullPermutation`方法展示了如何使用递归算法实现全排列问题的解决,这是一种常见的算法设计技巧。 7. 算法复杂度的考虑:在`check`方法中,通过两层循环和三层嵌套循环来寻找子字符串,这样的...

    DiGui.zip_Java 8_YBA_排列_汉诺塔_递归

    例如,可以使用Java 8的Stream API来实现全排列的非递归版本,通过`Stream.generate`生成所有可能的组合,然后使用`distinct`去除重复,最后用`forEach`打印结果。 总的来说,这个压缩包提供了实践递归算法的良好...

    蓝桥杯java历年真题及答案整理(共129道题目及答案)

    文件中的`Question1`类通过递归的方式实现了一个向量(Vector)内元素的所有可能的排列组合,并通过打印输出所有排列。这是一个经典的全排列问题,通常在算法竞赛和编程实践中会遇到。在此类问题中,要注意递归终止...

    java 算法设计

    当源向量为空时,表示已经完成了一种排列,此时将`result`打印出来并增加计数器`count`。否则,遍历源向量,将每个字符添加到结果向量,并从源向量中移除,然后对剩余的字符进行递归调用。 在`main`函数中,用户...

    蓝桥杯java历年真题与答案整理(共129道题目与答案).doc

    这篇文档主要涉及的是Java编程中的字符全排列问题,这是一个经典的算法问题,通常在数据结构与算法的学习和比赛中出现。在“蓝桥杯”这样的编程竞赛中,这种问题的解决能力是考察的重要方面。 首先,文档提供了两种...

    输出1到n的所有排列

    每组排列都按顺序打印,如“第1组:1,2,3,4”等。 总结来说,本示例通过回溯法实现了全排列问题的求解,展示了如何利用编程来生成一个整数序列的所有可能排列,这对于理解和应用回溯法解决其他类似的组合问题具有...

    java面试题目

    3. **全排列问题**:对于字符串数组的全排列,可以采用回溯算法或者动态规划来解决,涉及到数组操作和递归。 4. **JavaScript编程**:在浏览器中显示当前星期,可以用JavaScript的Date对象获取日期,然后处理输出。...

    蓝桥杯java历年真题及答案整理(共129道题目及答案).doc

    然后调用 `fullPermutation` 开始全排列计算,并打印总数 `count`。 ```java public static void main(String[] args) { // ...读取输入,初始化sourse和result... new Question1().fullPermutation(sourse, ...

Global site tag (gtag.js) - Google Analytics