问题描述
在下面给出的代码中,我在函数 ArrayList
中添加了 permute
的特定排列,但在 main
函数中打印时,不会打印所有可能的排列。相反,同样的 ArrayList<String>
被打印出来!次数,其中 n 是给定 ArrayList<String>
的长度。
我在 set
函数中将 permute
(我的全局变量)中的排列添加为 set.add(names)
,但是在 main
函数中打印它时,它提供的输出与未排列的相同数组列表。
import java.util.*;
public class Q1 {
static Set<ArrayList<String>> set = new HashSet<>(); ;
public static void main(String args[]) {
int n;
Scanner in = new Scanner(System.in);
n = in.nextInt();
ArrayList<String> names = new ArrayList<String>();
for(int i=0;i<n;i++) {
String temp;
temp = in.next();
names.add(temp);
}
System.out.println(set.size());
permute(names,names.size()-1);
System.out.println(set.size());
for(ArrayList<String> i : set) {
System.out.println(i);
}
}
public static void permute(ArrayList<String> names,int l,int r) {
if(l==r) {
if(set.contains(names)) {
return;
}
set.add((ArrayList<String>)names);
//System.out.println(names);
return;
}
for(int i=l;i<=r;i++) {
Collections.swap(names,l,i);
permute(names,l+1,r);
Collections.swap(names,i);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)