首页 > 代码库 > 组合(1-m中选n个数)

组合(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个数)