import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class FullSort { //将NUM设置为待排列数组的长度即实现全排列 private static int NUM = 0;
private static void sort(List datas, List target) { if (target.size() == NUM) { for (Object obj : target) System.out.print(obj); System.out.println(); return; } for (int i = 0; i < datas.size(); i++) { List newDatas = new ArrayList(datas); List newTarget = new ArrayList(target); newTarget.add(newDatas.get(i)); newDatas.remove(i); sort(newDatas, newTarget); } }
public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入X个字符,用逗号分割:"); String str = input.nextLine(); String[] datas = str.split(","); NUM = datas.length; sort(Arrays.asList(datas), new ArrayList()); }
}
//这样比较简单,经测试没问题! import java.util.Scanner; public class FullSort { public static void main(String[] args) {
Scanner input = new Scanner(System.in); System.out.println("请输入字符,并用,号隔开!"); String str = input.nextLine(); String[] strList = str.split(","); for (int i = 0; i < strList.length; i++) { for (int j = i+1; j < strList.length; j++) { String s = strList[i]+strList[j]; System.out.print(s+"、"); } } } } 测试结果: 请输入字符,并用,号隔开! a,b,c,d, ab、ac、ad、bc、bd、cd、
public class test { public static void main(String[] args) { String str[] = { "a", "b", "c", "d", "e", "f", "g" }; int x = str.length; int y = 1 << x; for (int i = 1; i <= y; i++) { for (int j = 0; j < x; j++) { int z = 1 << j; if ((z & i) != 0) { System.out.print(str[j]); } } System.out.println(""); } } }
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class FullSort {
//将NUM设置为待排列数组的长度即实现全排列
private static int NUM = 0;
/**
* 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
*
* @param datas
* @param target
*/
private static void sort(List datas, List target) {
if (target.size() == NUM) {
for (Object obj : target)
System.out.print(obj);
System.out.println();
return;
}
for (int i = 0; i < datas.size(); i++) {
List newDatas = new ArrayList(datas);
List newTarget = new ArrayList(target);
newTarget.add(newDatas.get(i));
newDatas.remove(i);
sort(newDatas, newTarget);
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入X个字符,用逗号分割:");
String str = input.nextLine();
String[] datas = str.split(",");
NUM = datas.length;
sort(Arrays.asList(datas), new ArrayList());
}
}
//这样比较简单,经测试没问题!
import java.util.Scanner;
public class FullSort {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符,并用,号隔开!");
String str = input.nextLine();
String[] strList = str.split(","); for (int i = 0; i < strList.length; i++) {
for (int j = i+1; j < strList.length; j++) {
String s = strList[i]+strList[j];
System.out.print(s+"、");
}
}
}
}
测试结果:
请输入字符,并用,号隔开!
a,b,c,d,
ab、ac、ad、bc、bd、cd、
public class test {
public static void main(String[] args) {
String str[] = { "a", "b", "c", "d", "e", "f", "g" };
int x = str.length;
int y = 1 << x;
for (int i = 1; i <= y; i++) {
for (int j = 0; j < x; j++) {
int z = 1 << j;
if ((z & i) != 0) {
System.out.print(str[j]);
}
}
System.out.println("");
}
}
}