私は自分の問題を解決するためにかなり見回してきました。私は多くの問題を解決しましたが、これはまだ私を悩ませています :S 長い間 Java プログラミング (プログラミング全般) に触れていないので、理解しておいてください! ;)
私の目標は、整数の配列から可能なすべての組み合わせを取得することです。次のコードを整数 {1, 2, 3, 4} のテスト配列に適用すると、次のようになる
と
予想
さ
れ
ます
。 1 4 3
(...)
しかし、これが私が得たものです
1 2 3 4
1 2 3 4 4 3
1 2 3 4 4 3 3 2 4
誰にも手がかり、提案、または解決策さえありますか? 前もって感謝します!
public class Calculation{
(...)
public void Permute(ArrayList<Integer> soFar,ArrayList<Integer> rest){
if(rest.isEmpty()) this.fillMatrice(convertIntegers(soFar)); // there it goes in a previously created arrow of int
else{
for(int k=0;k<rest.size();k++){
ArrayList<Integer> next=new ArrayList<Integer>();
next=soFar;
next.add(rest.get(k));
ArrayList<Integer> remaining=new ArrayList<Integer>();
List<Integer> sublist = rest.subList(0, k);
for(int a=0;a<sublist.size();a++) remaining.add(sublist.get(a));
sublist = rest.subList(k+1,rest.size());
for(int a=0;a<sublist.size();a++) remaining.add(sublist.get(a));
Permute(next,remaining);
}
}
}
public static ArrayList<Integer> convertArray(int[] integers){
ArrayList<Integer> convArray=new ArrayList<Integer>();
for(int i=0;i<integers.length;i++) convArray.add(integers[i]);
return convArray;
}
public static int[] convertIntegers(List<Integer> integers){
int[] ret = new int[integers.size()];
for(int i=0;i<ret.length;i++) ret[i]=integers.get(i).intValue();
return ret;
}
public Calculation() {
(...)
ArrayList<Integer> soFar=new ArrayList<Integer>();
int[] test={1,2,3,4};
Permute(soFar,convertArray(test));
}