问题描述
从1到n(n < 1000)个自然数中选出r个数进行组合,并按指定的格式输出组合的结果。例如:
n=5、r=3 时,共有10种组合,运行程序,要按下面的格式输出:
1 2 3
4
5
3 4
5
4 5
2 3 4
5
4 5
3 4 5
#include <stdio.h>
int n,r,flag; /*flag=0 表示另起一行*/
void arrange(int s,int j) /*从s开始选j个元素*/
{
int i,k;
for(i=s;i<= n-j+1;i++)
{
if(flag)
{
for(k=0;k<r-j;k++)
{
printf(" ");
}
}
printf("%d ",i);
flag=0;
if(j > 1)
{
arrange(i+1,j-1);
}
else
{
putchar('
');
flag=1;
}
}
}//arrange
int main()
{
scanf("%d%d",&n,&r);
while(n >=1000 || r > n)
{
printf("
Enter error,please enter again(n < 1000 && r < n)");
scanf("%d%d",&n,&r);
}
flag=1;
arrange(1,r);
return 0;
}//main