题目
解法
/**
* 从一组人中选择一只队伍
*
* @param arr
* @param number
*/
public static void selectTeamQuestion(int[] arr, int number) {
if (arr == null || arr.length < 0 || number < 0) return;
boolean[] selected = new boolean[arr.length];
selectTeam(arr, selected, number, 0);
}
private static void selectTeam(int[] arr, boolean[] selected, int number, int index) {
// 无合适组合
if (number < 0 || number > 0 && index > arr.length) {
return;
}
// 查询到合适的组合
if (number == 0) {
for (int i = 0; i < selected.length; i++) {
if (selected[i]) {
System.out.print(arr[i] + " ");
}
}
System.out.println();
return;
}
// 防止越界
if (index >= arr.length) {
return;
}
// 第一个合适
selected[index] = true;
selectTeam(arr, selected, number - 1, index + 1);
// 第一个不合适
selected[index] = false;
selectTeam(arr, selected, number, index + 1);
}