今晚我有一个问题。我正在尝试制作一个将采用数组的java程序,然后打印n个数组的所有组合。例如:完整数组是abcd,我想要2的组合,所以理想情况下我想要aa,ab,ac等。
这是我目前的代码,它似乎输出的全部是a,b,c,d,e等:
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Input Array:
String[] alphabet = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
int r = 3;
int n = alphabet.length;
//I need pairings of n (length) so like. 6/7/8
//Make an array to temporarily store the data, and commit recursion
print(alphabet, n, r);
}
public static String[] buildAlphabeticPassword(String[] alphabet, String[] data, int start, int end, int index, int r){
if (index == r){
for(int i=0; i <= r; i++){
System.out.println(data[i]+" ");
System.out.println("");
return data;
}
}
for( int n=start; n <= end && end-n+1 >= r-index; n++){
data[index] = alphabet[n];
buildAlphabeticPassword(alphabet, data, n+1, end, index+1, r);
}
return null;
}
public static void print(String[] alphabet, int n, int r){
String data[] = new String[r];
buildAlphabeticPassword(alphabet, data, 0, n-1, 0,r);
}
}
如果我遗漏了一些显而易见的东西,我道歉。谢谢你的时间!