1. 程式人生 > >n位數中取m位的組合

n位數中取m位的組合

public void printArr(String[] arr, int from, int to) {
        System.out.print("(");
        for(int i=from; i<to; i++) {
            System.out.print(arr[i]);
            if(i != to-1) {
                System.out.print(",");
            }
        }
        System.out.print(")");
    }

    public
void swap(String[] points, int i, int j) { String temp = points[i]; points[i] = points[j]; points[j] = temp; } public void combination(String[] points, final int n) { final int m = points.length; String[] copyPoints = Arrays.copyOf(points, m); int
len = m; int start = 0; int end = n-1; int toDelete = end-1; for(int i=0; len>=n; i++) { for(int toSwap = end+1; toSwap <= len; toSwap++) { printArr(copyPoints, 0, end+1); if(toSwap < len) { swap(copyPoints, end, toSwap); } } System.out.println(); if
(len == n) { copyPoints = Arrays.copyOfRange(points, start,m); len = copyPoints.length; toDelete--; }else { Arrays.sort(copyPoints); } System.out.println("toDelete="+toDelete); if(toDelete < 0) { return; } len = delete(copyPoints, len, toDelete); if(toDelete == 0) { toDelete = end-1; start++; } // printArr(copyPoints, 0, len); // System.out.print(" : "); } } public int delete(String[] arr, int len, final int index) { for(int i=index; i<len-1; i++) { arr[i] = arr[i+1]; } return len-1; }