Java 实现通用组合算法,存在一个类似 {31311133,33113330} 这样的集合,经过 8 取 5 组合,其他位置用非字母数字字符替代,比如使用 * 号,得到类似 {3***1133,***13330,... ...} 这样的集合。我们为大家收集整理了关于 java 组合算法,以方便大家参考。
import java.io.*;
public class Comb {
public void combine(int[] list,int k,int l,int r,int n){
if(k+l>n+1)
return;
if(l==0){
for(int i=0;i<R;I++)<p="">
System.out.print(list[i]+"");
System.out.println();
return;
}
list[r-l]=k;
combine(list,k+1,l-1,r,n);
if(k+l<=n)
combine(list,k+1,l,r,n);
}
public static void main(String []args) throws NumberFormatException, IOException{
Comb obj = new Comb();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please input n:");
int n = Integer.parseInt(br.readLine());
System.out.println("Please input r:");
int r = Integer.parseInt(br.readLine());
int []list = new int[r];
int k=1;
int l=r;
obj.combine(list,k,l,r,n);
}
}
来源: http://www.51edu.com/it/bckf/493389.html