在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的最大值

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

n个数的r组合

有重复元素的排列问题

[CSP-S模拟测试]:Set(随机化)

CCPC 网络选拔 array