C:编程从n数中抽出r个数的所有组合方式(递归)

编程入门 行业动态 更新时间:2024-10-28 21:17:09

C:编程从n数中抽出r个数的所有组合方式(<a href=https://www.elefans.com/category/jswz/34/1771140.html style=递归)"/>

C:编程从n数中抽出r个数的所有组合方式(递归)

前言

关于递归

正文

编程从n数中抽出r个数的所有组合方式
例如:从1,2,3,4中四个数抽三个数组合为:432,431,421,321
关键:下一个数的选取范围要在比上一个数小的数的集合中
例如,4个数中选3个,第一个数可以选4,3,第二个数可以选2(若选3),3(若选4),第三个数可以选1(若选2),2(若选3)。总之就是每次选后,剩下的数要不少于r-1,且下次选的数要小于本次选的数

代码

用数组b[]来储存选择数的下标号

#include <stdio.h>
void combine(int n,int r,int a[],int b[],int R);
int main(){int i,j;int n,r;int a[]={1,2,3,4}; //只能是1,2,3....n scanf("%d%d",&n,&r);int b[r];combine(n,r,a,b,r);
}
void combine(int n,int r,int a[],int b[],int R){int i,j;if(r==0){ //递归跳出条件,待组合数为0i=0;for(i=0;i<R;i++){printf("%d",a[b[i]]);}printf("\n");}else{for( j=n;j>=r;j--){b[r-1]=j-1;		//b用来储存组合数中每个选择出数的下标 combine(j-1,r-1,a,b,R);//递归体每次完成一个数的选取}}
}

更多推荐

C:编程从n数中抽出r个数的所有组合方式(递归)

本文发布于:2024-03-08 02:23:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719597.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   组合   个数   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!