您的位置:首页 > 其它

Permutation(递归)

2016-06-14 20:39 429 查看
输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。
输出:全排列的结果。
示例:输入:3  / *  2,输出:/  * 2  /  2  *  *  /  2  *  2  /  2  *  / 2  /  *  

import java.util.Scanner;

public class Permutation {

private static void swap(String arr[], int a, int b) {
String temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}

static void perm(String arr[], int left, int right) {
if (left == right) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" "); //这里是一组数值,不需要换行
}
} else {
for (int j = left; j<= right; j++) {
swap(arr, left, j); // 开始时j=left,第一次不交换(前缀)
perm(arr, left + 1, right); // 每一轮的结果
swap(arr, left, j); // 恢复开始的顺序
}

}
}

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
int n = s.nextInt();
String[] arr=new String
;
for (int i = 0; i < arr.length; i++) {
arr[i]=s.next(); //s.next为字符串输入
}

perm(arr,0,arr.length-1);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: