【发布时间】:2018-10-30 15:26:26
【问题描述】:
我正在尝试获得一些排列,稍后我将使用这些排列来强制邻接矩阵。下面的代码可能效率不高,但它可以工作。我想将所有输出的排列添加到一个数组中。我正在努力做到这一点。任何人都可以帮忙吗?
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter num: ");
int num = in.nextInt();
String str = "";
for (int i=0; i < num; i++){
String temp = Integer.toString(i);
str += temp;
}
int n = str.length();
Permutation permutation = new Permutation();
permutation.permute(str, 0, n-1);
}
}
class Permutation {
public void permute(String str, int l, int r){
if (l == r) {
System.out.println(str);
}
else{
for (int i = l; i <= r; i++){
str = swap(str,l,i);
permute(str, l+1, r);
str = swap(str,l,i);
}
}
}
public String swap(String a, int i, int j) {
char temp;
char[] charArray = a.toCharArray();
temp = charArray[i] ;
charArray[i] = charArray[j];
charArray[j] = temp;
String perm = String.valueOf(charArray);
return perm;
}
}
【问题讨论】:
-
好吧,不是打印排列,而是将它添加到数组中......
-
是的,我试过了,但每次都出错。我会在哪里追加?
标签: java permutation brute-force