我需要置换int[][]
中的第一行,并在后续行中保存每个结果排列。我的教授给了我这个实现的字符串版本作为指南:
private static void permute( char [ ] str, int low, int high )
{
if( low == high )
System.out.println( str );
for( int i = low; i <= high; i++ )
{
char [ ] tmp = str.clone( ); // tmp will be str
tmp[ i ] = str[ low ]; // with i and low
tmp[ low ] = str[ i ]; // swapped
permute( tmp, low + 1, high );
}
}
这是我到目前为止所做的(第一点是我如何称呼它):
for (int row = 0; row < arr.length * LIST_SIZE; row++){
if (arr.length % LIST_SIZE == LIST_SIZE-1)
arr[row] = permute(arr[row%LIST_SIZE], 0, LIST_SIZE-1).clone();
}
public int[] permute(int[] intArr, int low, int high){
int[] returnArr = null;
if (low == high){
returnArr = intArr.clone();
}
for (int i = low; i <= high; i++){
int[] temp = intArr.clone();
temp[i] = intArr[low];
temp[low] = intArr[i];
permute(temp, low+1, high);
}
return returnArr;
}
现在,第一个之后的2d数组的每一行都只用零填充。我有一种感觉,我现在比这更难。
答案 0 :(得分:0)
您忘记使用 permute()实际返回的置换值,替换
permute(temp, low+1, high);
与
returnArr = permute(temp, low+1, high);