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;
}
n位数中取m位的组合
最新推荐文章于 2020-08-27 21:52:02 发布