/*
@author wenmin.h
*/
public class Permutation
{
public static void listAll(char[] arr_Str)
{
if(arr_Str.length<=1)
{
System.out.println(arr_Str[0]);
return;
}
doPerm(0+1,arr_Str,new char[]{arr_Str[0]});
}
/*
index:当前要进行挨个插位的字符下标
arr_All:给定的字符数组
arr_Already:当前索引前已排好的字符数组
*/
private static void doPerm(int index,char[]arr_All,char[]arr_Already)
{
if(index == arr_All.length-1)
{
for(int i = 0; i <= index; i++)
{
System.out.println(new String(insertAt(arr_Already,i,arr_All[index])));
}
}
else
{
for(int i = 0; i <= index; i++)
{
doPerm(index+1,arr_All,insertAt(arr_Already,i,arr_All[index]));
}
}
}
//指定位置插入新的字符,并将原数组中的元素往后移动
private static char[] insertAt(char[] char_Arr,int index,char c)
{
char[] tmp = new char[char_Arr.length+1];
for(int i = 0,j=0;i<tmp.length;i++,j++)
{
if(i==index)
{
tmp[index]= c;
j--;
}
else
{
tmp[i] = char_Arr[j];
}
}
return tmp;
}
public static void main(String[] args)
{
if(args.length==0)
{
System.out.println("Nothing input!");
System.exit(0);
}
char[] arr_Str = args[0].toCharArray();
listAll(arr_Str);
}
}
命令行下执行:java Permutation ab
结果:
ba
ab
如有雷同纯属巧合 - -!
可以思考下如果输入的字符中有相同的,那么如何避免全排列的输出出现重复?
分享到:
相关推荐
全排列是指从给定的字符数组中,按照一定的顺序生成所有可能的排列组合。这个问题通常使用回溯法来解决,因为它能够有效地避免重复的排列。下面我们将深入探讨如何使用Java实现字符数组的全排列。 首先,我们需要...
在实际应用中,全排列算法常用于解决各种问题,比如密码生成、组合优化、数据排序等。掌握这种算法可以帮助开发者更好地理解和解决复杂问题。通过这个例子,你可以看到Java是如何利用递归和回溯策略来有效地生成...
- `TestPermute.java`:可能实现了字符串的全排列算法,并命名为`permute`方法。 - `Test2.java`:可能是对另一种算法的实现,比如改进或优化过的版本。 - `Test.java`:通常用于编写单元测试,检验各种输入情况下,...
题目描述:给定一个数列a1,a2,a3…an,输出他所有的全排列。 算法设计描述: 1、获取当前的一种排列,用start,end分别表示该排列的列头,列尾; 2、判断start是否和end相等,若相等,执行3,否则执行4; 3、将当前...
全排列算法是指将 N 个不同字符全排列的算法。例如,给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA 一共 3!=3*2=6 种情况。 Java 实现全排列算法可以使用递归方法,通过将原数组分解为两个...
在字符串全排列问题中,我们需要找出一个给定字符集的所有可能的排列组合。例如,对于字符串 "abc",全排列包括 "abc"、"acb"、"bac"、"bca"、"cab" 和 "cba"。这个问题可以使用回溯法来解决,其基本步骤如下: 1. ...
本资源摘要信息涵盖蓝桥杯 Java 题解,包括字符排序算法、全排列算法和去重复元素等知识点。 字符排序算法 在计算机科学中,字符排序算法是一种基本的算法,用于对字符串中的字符进行排序。例如,给定三个不同的...
在Java中,我们可以使用递归或者字典序的方法来实现全排列算法。 首先,让我们深入理解递归方法。递归是一种解决问题的方法,它将问题分解成更小的子问题,直到子问题变得足够简单可以直接解决。在全排列问题中,...
字符排序算法的目标是生成所有可能的字符排列组合,例如给定N个不同的字符,会产生N!(N的阶乘)种排列。 首先,我们来看第一个方法。这个方法基于递归思想实现全排列。核心函数`fullPermutation`接受两个参数,一...
- 使用全排列算法生成所有可能的三位数。 11. **整数判断**: - 知识点:整数性质,数学推理。 - 遍历一定范围内的数,检查是否符合完全平方数的条件。 12. **日期计算**: - 知识点:日期处理,闰年判断。 -...
字符排序算法是计算机科学中的一种基本算法,用于将给定的字符集合进行全排列。例如,给定三个不同的字符A、B、C,则结果为ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。 在Java语言中,可以使用递归算法来...
7. **全排列**:程序11要求找出所有不重复的三位数,这需要用到全排列算法。可以使用回溯法或者直接生成所有可能的三位数组合。 8. **分段函数计算**:程序12涉及奖金提成计算,是一个分段线性函数。可以使用多个if...
全排列问题是指给定一个字符串,求出该字符串的所有可能的排列组合。例如,对于字符串 "abc",其所有可能的排列为 "abc"、"acb"、"bac"、"bca"、"cab" 和 "cba"。 **代码分析:** ```java public class Permutation...
全排列是指给定 N 个不同字符,将这 N 个字符全排列,最终的结果将会是 N! 种。例如,给定 A、B、C 三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA,一共 3! = 3*2 = 6 种情况。 在 Java 中,可以使用...
2. Java语言编程实践:文件中展现了使用Java语言编写的代码,包括使用Scanner类读取用户输入、使用Vector类来存储字符数据、使用嵌套循环来实现递归全排列算法。此外,还涉及到了print语句打印结果以及对计数变量...
#### 题目一:全排列算法实现 **背景介绍**: 蓝桥杯大赛作为一项知名的计算机类竞赛,旨在考查参赛者的编程能力和算法理解能力。其中一道经典题目是关于全排列的实现。此题要求根据给定的不同字符集合,输出所有...
给定N个不同的字符,需要计算并输出所有可能的排列组合。代码中使用了递归方法`fullPermutation`实现。它首先检查源向量`sourse`是否为空,如果为空,表示已经完成一个排列,此时输出排列并增加计数器`count`;如果...
例如,给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。 在Java中,可以使用Vector来存储字符,并使用...
全排列算法实现 #### 知识点概述 全排列问题是指对于给定的一些元素,求出所有可能的排列方式。例如,给定`A`, `B`, `C`三个字符,其全排列结果为`ABC`, `ACB`, `BAC`, `BCA`, `CAB`, `CBA`,一共有`3! = 3 * 2 * ...