从键盘输入两个自然数N,R(N>R),要求输入从N到1中按降序顺序取R个自然数的所有组合个数。
输入:N=5,R=3
输出:543,542,541,532,531,521,432,431,421,321
Total=10
输入:N=5,R=3
输出:543,542,541,532,531,521,432,431,421,321
Total=10
解决方案 »
- JAVA 中数组的读与写的问题。
- 100分求poi、pdfbox,commons包 读(pdf,xls,xlsx,doc,docx,ppt,pptx)的demo
- 方法调用的疑问???
- 我设计了一个BorderLayout的窗口,中间以表格显示数据库数据,老报错
- eclipse3.2 进行gui 开发问题?
- 利用URL得到图片后,如何判断图片是否真的存在???急!!
- 图形的初级问题
- 大家能不能给说说Collections的Sort方法?
- 碰到一个棘手的问题:关于多线程程序异常退出的问题
- 请熟悉JCE的高手们来看看了,我的程序为什么总出错啊!
- 系统中部分西班牙语字体显示乱码,请大家帮忙。
- integer不是对象吗,问个问题
public class Test { public static int total = 0;
public static void main(String[] args) {
method(5,3);
}
public static void method(int n, int r){
if(n <= r) return;
inner(n, 0, new int[r]);
System.out.println("Total: " + total);
}
private static void inner(int num, int index, int[] arr){
if(index == arr.length){
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d ", arr[i]);
}
System.out.println();
total++;
}else{
for (int i = num; i >= arr.length - index; i--) {
arr[index] = i;
inner(i - 1, index + 1, arr);
}
}
}
}
用的很强大!
public class Test {
public static void main(String args[]) {
new Test().go(5, 3);
}
public void go(int startnumber, int length) {
for(int i = startnumber; i >= length; i--) {
generate("", i, length);
}
} public void generate(String prenumber, int startnumber, int length) {
if(length == 2) {
for(int i = startnumber - 1; i > 0; i--) {
System.out.println(prenumber + startnumber + "" + i);
}
} else {
for(int i = startnumber - 1; i >= length - 1; i--) {
generate(prenumber + String.valueOf(startnumber), i, length - 1);
}
}
}
}递归的话定义一个嵌套讯混
generate(5, 3) = 5 + generate(4, 2)
5 + generate(3, 2)
5 + generate(2, 2)
而generate(startnumber, length)
在这里的概念是生成以startnumber为起始的length个数的所有序列