在n个数中找r个数的组合
找出n个自然数中r个数的组合
法一:
代码如下:
public class twentyseven {
public static void main(String[] args) {
int n=5;int r=3;int t=0;
for(int i=1;i<=r;i++) {
for(int j=i+1;j<=r+1;j++) {
for(int k=j+1;k<=r+2;k++) {
System.out.println(i+" "+j+" "+k);
t++;
System.out.println("t="+t);
}
}
}
}
}
运行结果:
法二:递归
代码如下:
//递归方式找出n个自然数1, 2, 3, · · · , n中r个数的组合
import java.util.Scanner;
public class fiftyfour {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int r=reader.nextInt();
int[] a=new int[n+1];
if(r>n) {
System.out.println("n,error");
}
a[0]=r;
comb(n,r,a);
}
public static void comb(int n,int r,int[] a) {
for(int i=n;i>=r;i--) {
a[r]=i;
if(r>1) {
comb(i-1,r-1,a);
}
else {
for(int j=a[0];j>0;j--) {
System.out.printf("%d ",a[j]);
}
System.out.println();
}
}
}
}