java实现组合,假设一组数{1,2,3,4,5,6,7,8} ,n = 8 k = 4;
从8个数中取第1个数 比如1,然后在剩下7个里面去第二个数,比如2,然后第三个在剩下的六个数中选择一个数。依次类推
如果第一次去1,第二次取第一个数时,不需要把1再列举进去,会重复
1. import java.util.ArrayList;
2.
3. public class Combine {
4. <Integer>tmpArr = new ArrayList<>();
5. public static void main(String[] args) {
6. com = {1,2,3,4,5,6,7,8};
7. k = 8;
8. > com.length || com.length <= 0){
9. return ;
10. }
11. combine(0 ,k ,com);
12. }
13. public static void combine(int index,int k,int []arr) {
14. k == 1){
15. i = index; i < arr.length; i++) {
16. tmpArr.add(arr[i]);
17. System.out.println(tmpArr.toString());
18. tmpArr.remove((Object)arr[i]);
19. }
20. > 1){
21. i = index; i <= arr.length - k; i++) {
22. tmpArr.add(arr[i]);
23. combine(i + 1,k - 1, arr);
24. tmpArr.remove((Object)arr[i]);
25. }
26. }else{
27. return ;
28. }
29. }
30. }