13,097
社区成员




_479301 0913825746
_479302 0913826475
_479303 0913847526
_479304 0913846257
_479305 0913846275
thesum is :479306
public class Traversal {
static long thesum = 0;
public static void main(String[] args) {
int buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
perm(buf, 0, buf.length - 1);
System.out.println("thesum is :" + thesum);
}
public static void perm(int[] buf, int start, int end) {
if (start == end) {//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
for (int i = 1; i <= end; i++) {
if (((buf[i] - buf[i - 1]) == 1) || ((buf[i] - buf[i - 1]) == -1)) {
return;
}
}
System.out.print("_" + thesum + " ");
for (int i = 0; i <= end; i++) {
System.out.print(buf[i]);
}
thesum++;
System.out.println();
} else {//多个字母全排列
for (int i = start; i <= end; i++) {
int temp = buf[start];//交换数组第一个元素与后续的元素
buf[start] = buf[i];
buf[i] = temp;
perm(buf, start + 1, end);//后续元素递归全排列
temp = buf[start];//将交换后的数组还原
buf[start] = buf[i];
buf[i] = temp;
}
}
}
}
public class Traversal {
static long thesum = 0;
public static void main(String[] args) {
int buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
perm(buf, 0, buf.length - 1);
System.out.println("thesum is :" + thesum);
}
public static void perm(int[] buf, int start, int end) {
if (start == end) {//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
for (int i = 1; i <= end; i++) {
if (((buf[i] - buf[i - 1]) << 1 >> 1) == 1) {
return;
}
}
System.out.print("_" + thesum + " ");
for (int i = 0; i <= end; i++) {
System.out.print(buf[i]);
}
thesum++;
System.out.println();
} else {//多个字母全排列
for (int i = start; i <= end; i++) {
int temp = buf[start];//交换数组第一个元素与后续的元素
buf[start] = buf[i];
buf[i] = temp;
perm(buf, start + 1, end);//后续元素递归全排列
temp = buf[start];//将交换后的数组还原
buf[start] = buf[i];
buf[i] = temp;
}
}
}
}