【发布时间】:2020-11-20 14:19:36
【问题描述】:
我正在尝试在数组大小 n 中打印大小为 r 的所有组合,但我没有输出。当我在eclipse中使用代码覆盖工具时,它显示:
- 应该打印组合的我的 for 块 - 不运行。
- 我的 for 块用所有可能的元素替换索引,循环体不运行
我花了几天时间试图完成这项工作,但我似乎无法理解为什么它不起作用。我究竟做错了什么? (这段代码是我从 GeeksforGeeks 写的)。
/*
* inputArray[] --> input array
* data[] --> Temporary array to store current combination
* start & end --> Starting and ending indexes in inputArray[]
* index --> Current index in data[]
* r --> Size of combination to be printed
-------------------------------------------------------------- */
package gfg;
public class Combination {
static void combinationUtil(int inputArray[], int data[], int start,
int end, int index, int r) {
//current combination is ready to be printed, print it.
if (index == r) {
for (int j = 0; j < r; j++) //BRANCH MISSED
System.out.print(data[j] + " ");
System.out.println(" ");
return;
}
// replace index with all possible elements the condition
// end-i+1 >= index makes sure that including one element
// at index will make a combination with remaining elements
// at remaining positions
for (int i = start; i <= end && end - i + 1 >= r - index; i++) {
data[index] = inputArray[i]; //BRANCH MISSED
combinationUtil(inputArray, data, i + 1, end, index + 1, r);
}
}
// print all combinations of size r in inputArray[] of size n
static void printCombination(int inputArray[], int n, int r) {
int data[] = new int[r]; //store combinations one by one
//Print all combinations using temporary array 'data[]'
combinationUtil(inputArray, data, n, 0, n - 1, r);
}
// driver code
public static void main(String[] args) {
int inputArray[] = {1, 52};
int r = 3;
int n = inputArray.length;
printCombination(inputArray, n, r);
}
}
【问题讨论】:
标签: java arrays combinations permutation