public static TreeSet<String> set = new TreeSet<String>();//注意这里可以自动消除重复
public static void perm(char[] n, int beg, int end) {//对第几位到第一位的数进行排序
if (beg == end) {//如果只是对某一位进行排序,则直接返回
addNumber(String.valueOf(n));
} else {
for (int i = beg; i <= end; ++i) {
swap(n, beg, i);
perm(n, beg + 1, end);
swap(n, beg, i);
}
}
}
public static void swap(char[] n, int x, int y) {//如果数组n中,第x,y位的数字不同,交换位置,否者直接返回
if (x == y || n[x] == n[y]) {
return;
}
char temp = n[x];
n[x] = n[y];
n[y] = temp;
}
public static void addNumber(String str) {//将符合条件的放在set里面
if (str.charAt(2) == '4' || str.contains("35") || str.contains("53")) {
return;
}
set.add(str);
}
public static void main(String args[]) {
char[] number = new char[] { '1', '2', '2', '3', '4', '5','6' };
perm(number, 0, number.length - 1);
System.out.println(set.size());
int cols = 10;
for (String s : set) {
System.out.print(s + " ");
if (cols-- == 1) {
System.out.println();
cols = 10;
}
}
}
}
对于字符同样适用addNumber的条件改一下就行。。。。作者: 钱金磊 时间: 2016-4-17 22:34
用方法吧作者: liudh1 时间: 2016-4-18 23:32
1.定义一个HashSet集合:储存这6个数字;作者: liudh1 时间: 2016-4-18 23:38