改了几次,第三个测试点输入"8"还是超内存,求教
import java.util.Scanner;
public class Main{
public static int n;
public static boolean[] b;
public static int[] ans;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
b = new boolean[n+1];
ans = new int[n+1];
f(1);
}
public static void f(int k) {
if (k==n+1){
print();
return;
}
int i;
for (i = 1; i <= n; i++){
if (b[i]==false){
b[i]=true;
ans[k]=i;
f(k+1);
b[i]=false;
}
}
}
public static void print(){
StringBuffer sb = new StringBuffer();
for (int i = 1; i <= n; i++){
sb.append(String.format("%5d",ans[i]));
}
System.out.println(sb);
}
}