组合(1-m中选n个数)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合(1-m中选n个数)相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
int a[100],b[100]={0},m,n;
bool p(int k)//定义一个bool类型函数 ,用来判断
{
if(b[k]==1)
{
return false;
}
return true;
}
void s(int k)//定义一个函数,用来回溯;
{

for(int i=a[k-1];i<=m;i++)
{
a[k]=i;//将i填进数组里
if(p(i))// 判定i是否用过
{
b[i]=1;//标记
if(k==n)//如果填完了
{
for(int j=1;j<=n;j++)//输出
{
printf("%d ",a[j]);
}
printf("\n");
}
else
{
s(k+1);//调用自己
}
b[i]=0;//取消标记
}
}
a[k]=0;//归零
}
int main()
{
scanf("%d%d",&m,&n);//输入m,n;
for(int i=1;i<=m;i++)//定义第一个数
{
a[1]=i;
b[i]=1;
s(2);
}

return 0;
}

hahahahahahaha

以上是关于组合(1-m中选n个数)的主要内容,如果未能解决你的问题,请参考以下文章

递归实现从n个数中选r个数的组合数

从n个数中取出m个数字的所有情况,用啥算法解决,哪种效率比较高呢

LeetCode 第77题 组合

组合数—学习笔记

算法-递归-排列组合

组合数学练习题——Chemist