来源:JK老班
组合另一种方法

降序输出
import java.util.Scanner;
//组合:降序输出
public class Main {
int n,m;
int[] A;
public Main() {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();m=sc.nextInt();
A=new int[m];
Search(n,0);
}
void Search(int i,int count) {//现在是第几层,已经选了几个数
if(count==m) {//选够了就输出
for(int a:A)
System.out.print(a+" ");
System.out.println();
return;
}
if(i<1) return;//一直都不选,要保证不能越界
A[count]=i; Search(i-1,count+1);//选i
Search(i-1,count);//不选i
// 位置换一下?先不选,再选
// Search(i-1,count);//不选i
// A[count]=i; Search(i-1,count+1);//选i
}
public static void main(String[] args) {
Main m=new Main();
}}
升序输出
import java.util.Scanner;
//组合:升序输出
public class Main1 {
int n,m;
int[] A;
public Main1() {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();m=sc.nextInt();
A=new int[m];
Search(1,0);
}
void Search(int i,int count) {//现在是第几层,已经选了几个数
if(count==m) {//选够了就输出
for(int a:A)
System.out.print(a+" ");
System.out.println();
return;
}
if(i>n) return;//一直都不选,要保证不能越界
A[count]=i; Search(i+1,count+1);//选i
Search(i+1,count);//不选i
}
public static void main(String[] args) {
Main1 m=new Main1();
}}
本文提供两种不同的组合输出算法实现:一种用于生成降序组合,另一种用于生成升序组合。通过递归搜索的方法,在Java中实现了这两种算法,并能够根据输入的整数范围和组合长度输出所有可能的组合。
2万+

被折叠的 条评论
为什么被折叠?



