在n个任意不相同的数中,输出r个数的组合,并且n和r由键盘输入。
Posted qq396986862
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在n个任意不相同的数中,输出r个数的组合,并且n和r由键盘输入。相关的知识,希望对你有一定的参考价值。
主要是运用递归的思想,函数主要两个参数,point是上一次取到的位置,picked主要记录在数组b中所取的元素的个数,函数的每一轮递归都会取一个数。
1 package pack; 2 import java.util.*; 3 4 public class demo_1 { 5 static int r,n; 6 static int a[]=new int [100]; 7 static int b[]=new int[100]; 8 static void f(int point,int picked) { 9 if(picked==r) { 10 for(int i=0;i<r;i++) 11 System.out.print(b[i]+" "); 12 System.out.println(); 13 return ; 14 } 15 for(int i=point;i<n;i++) { 16 b[picked]=a[i]; 17 f(i+1,picked +1); 18 } 19 } 20 21 public static void main(String[] args) { 22 Scanner in = new Scanner(System.in); 23 System.out.print("请输入N的值:"); 24 n=in.nextInt(); 25 System.out.println("请输入数组的"+n+"个值:"); 26 for(int i=0;i<n;i++) 27 a[i]=in.nextInt(); 28 29 System.out.print("请输入R的值"); 30 r=in.nextInt(); 31 f(0,0); 32 33 } 34 }
以上是关于在n个任意不相同的数中,输出r个数的组合,并且n和r由键盘输入。的主要内容,如果未能解决你的问题,请参考以下文章
求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值