展开全部
package Lianxi.yong2;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
62616964757a686964616fe58685e5aeb931333335303561A a = new A();
}
}
class A {
Scanner cin = new Scanner(System.in);
int n;
char a[];
public A() {
n = cin.nextInt();
a = new char[n];
for (int i = 0; i
a[i] = (char) (i + 49);
}
next();
}
private void next() {
// TODO Auto-generated method stub
for (char i : a) {
System.out.print(i + " ");
}
System.out.println();
LinkedList is = new LinkedList();
LinkedList js = new LinkedList();
is.add(n - 1);
js.add(n - 1);
//假设我们不模拟递归的情况,就模拟多重循环(这比较简单,先做简单的事情)
//但是事实就是其实只要模拟一个多重循环就可以把问题解决了
while (!is.isEmpty() && is.getLast() > 0) {
while (!js.isEmpty() && js.getLast() >= is.getLast()) {
int j = js.getLast();
int i = is.getLast();
js.removeLast();
js.addLast(j - 1);
if (a[j] > a[i - 1]) {
swap(j, i - 1);
daoxu(i);
for (char c : a) {
System.out.print(c + " ");
}
System.out.println();
is.add(n - 1);
js.add(n - 1);
}
}
js.removeLast();
js.addLast(n - 1);
is.addLast(is.removeLast()-1);
}
}
private void daoxu(int i) {
// TODO Auto-generated method stub
int j = n - 1;
for (int i2 = 0; i + i2
if (i + i2
swap(i + i2, j - i2);
}
}
private void swap(int i, int j) {
// TODO Auto-generated method stub
char temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
我不知道你的算法是否正确,但是如果8 9的话是得不到正确的结果的,不过我改写的竟然可以得到正确的结果,真是奇怪