组合;从m个数中选出n个数的可能方法数:
import java.util.Scanner;
public class ZuHe {
static int m; //数字的个数
static int n; //组合的个数
static int[] arr; //存放所有的数
static int[] arrZ; //存放组合
static int time;
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
m=Integer.valueOf(input.nextLine());
n=Integer.valueOf(input.nextLine());
input.close();
time=0;
arr=new int[m];
for (int i = 0; i < arr.length; i++) {
arr[i]=i+1;
}
arrZ=new int[n];
getZuHe(0,0);
System.out.println(time);
}
//递归产生组合数
public static void getZuHe(int j,int i){
if(j==n){
time++;
printf();
return;
}
for (; i < arr.length-arrZ.length+1+j; i++) {
arrZ[j]=arr[i];
getZuHe(j+1,i+1);
}
}
public static void printf(){
for (int i = 0; i < arrZ.length; i++) {
System.out.print(arrZ[i]+" ");
}
System.out.println();
}
}
PS:其实也可以用2进制数表示,当m位2进制数有n位1(也可以是0)时输出对应的数。也可以求出组合数;