在Java中打印整数数组的所有置换
我刚刚编写了一段代码,用于在Java中打印int数组中从1到n的所有可能排列,但我认为它比需要的更复杂。我使用Hashset来避免重复。如果有人发现一些不能简化的东西,请写下来在Java中打印整数数组的所有置换,java,arrays,recursion,permutation,Java,Arrays,Recursion,Permutation,我刚刚编写了一段代码,用于在Java中打印int数组中从1到n的所有可能排列,但我认为它比需要的更复杂。我使用Hashset来避免重复。如果有人发现一些不能简化的东西,请写下来 import java.util.*; public class ProblemFour { private static int n; private static void printResult(int[] result) { Set<Integer> set = n
import java.util.*;
public class ProblemFour {
private static int n;
private static void printResult(int[] result) {
Set<Integer> set = new HashSet<>();
Integer[] nums = new Integer[result.length];
for (int i = 1; i <= n; i++) {
nums[i - 1] = result[i - 1];
}
for (Integer num : nums) {
set.add(num);
}
if(set.size() == n) {
String s = "[ ";
for (Integer num : nums) {
s += num + " ";
}
System.out.println(s + "] ");
}
}
private static void permute(int[] result, int index) {
if (index == result.length) {
printResult(result);
return;
}
for (int i = 1; i <= n; i++) {
result[index] = i;
permute(result, index+1);
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("From 1 to: ");
n = input.nextInt();
int[] result = new int[n];
permute(result, 0);
}
}
import java.util.*;
公共课问题四{
私有静态int n;
私有静态void打印结果(int[]结果){
Set=newhashset();
整数[]nums=新整数[result.length];
对于(inti=1;i我早就编写了这个排列代码,它使用列表作为数据结构
public List<List<Integer>> permute(int[] numbers) {
// we use a list of lists rather than a list of arrays
// because lists support adding in the middle
// and track current length
List<List<Integer>> permutations = new ArrayList<List<Integer>>();
// Add an empty list so that the middle for loop runs
permutations.add(new ArrayList<Integer>());
for ( int i = 0; i < numbers.length; i++ ) {
// create a temporary container to hold the new permutations
// while we iterate over the old ones
List<List<Integer>> current = new ArrayList<List<Integer>>();
for ( List<Integer> permutation : permutations ) {
for ( int j = 0, n = permutation.size() + 1; j < n; j++ ) {
List<Integer> temp = new ArrayList<Integer>(permutation);
temp.add(j, numbers[i]);
current.add(temp);
}
}
permutations = new ArrayList<List<Integer>>(current);
}
return permutations;
公共列表排列(int[]数字){
//我们使用列表列表而不是数组列表
//因为列表支持中间添加
//和跟踪电流长度
列表置换=新的ArrayList();
//添加一个空列表,以便运行中间for循环
add(newarraylist());
for(int i=0;i
}这似乎是为了让我投票结束这个问题,因为这个问题是开放式的,因此不适合这个问答网站。