题目

来源:互联网 发布:2015年网络购物交易额 编辑:程序博客网 时间:2024/05/17 06:09
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class RamdonSort {
private static int a[] = new int[100];


public static void main(String[] argv)


{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("请输入n的大小:");
String s = br.readLine();
System.out.println("请输入r的大小:");
String str = br.readLine();
int n = Integer.parseInt(s);
int r = Integer.parseInt(str);
a[0] = r;// 这个初值很重要
Ramdonsot(n, r);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


public static void Ramdonsot(int m, int k) {
int i, j;
if (k < 0 || k > m)
return;
for (i = m; i >= k; i--) {
a[k] = i;// 将第一个数放在a[k]中
if (k > 1) {
// 将问题分解为Ramdonsot(i-1,k-1)逐步分解,递归求和
Ramdonsot(i - 1, k - 1);// 网上给出的答案很多这里是错的,给出的是Ramdonsot(m-1,k-1)造成
// 有很多的重复
} else {
for (j = a[0]; j > 0; j--)// a[0]并没有存放排列的数,只是做为一个中介的量
{
System.out.print(a[j]);
// 之前在这为System.out.print(a[j]+'\t'),就加了一个'\t',使结果错得离谱
}
}
System.out.println();
}


}
}