public class test {
public static void main(String[] args) {
int a[] = new int[36];
for(int i = 0; i < 36; ++i)
a[i] = i+1;
select(a, 7, 36);
}
static void select(int[] a, int n, int m) {
qsort(a, 0, m-1);
reverse(a, n, m-1);
print(a, 0, n-1);
int p = n;
while(true) {
if(p == 0)
break;
int k = p;
if(a[--p] < a[k]) {
int r = m;
while(a[--r] < a[p]);
if(p == 0 && r == 1)
break;
if(r < n)
continue;
swap(a, r, p);
if(k < n) {
qsort(a, k, r-1);
reverse(a, n, r-1);
}
print(a, 0, n-1);
p = n;
}
}
}
static int c = 0;
static void print(int[] a, int i, int j) {
System.out.print("No." + ++c + " ");
for(int k = i; k <= j; ++k)
System.out.print(a[k]+" ");
System.out.println();
}
static void swap(int[] a, int i, int j) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
static void reverse(int[] a, int i, int j) {
while(i < j)
swap(a, i++, j--);
}
static void qsort(int[] a, int i, int j) {
while(i < j) {
int s = i;
for(int k = i; k < j; ++k)
if(a[k] < a[j])
swap(a, s++, k);
swap(a, s, j);
qsort(a, i, s-1);
i = s + 1;
}
}
}
温馨提示:答案为网友推荐,仅供参考