组合数从小到大

题目:

输入T(测试数据的组数),n,m,从1到n 中找 x ( x<= m && x >= 1)个数组成一个 m 位数,把所有的m位数从小到大输出。
 

输入:

1

2 2

输出:

11

12

21

22

我的代码:

#include<stdio.h>
#include<string.h>

void fun(int n,int k);
int a[10];

int main()
{
  int T,n,m;
  scanf("%d",&T);
  getchar();
  
    do
    {
      scanf("%d%d",&n,&m);
      a[0] = m;//记录排列的长度 
      fun(n,m);      
            
    }while(--T); 
 // system("pause");
  return 0;
}

void fun(int n,int k)
{
  int i,j;     
  
  for(i = 1 ; i <= n ; ++i)
  {
      a[k] = i;
      if(k > 1)
        fun(n,k-1);//每个位置上的数都得从1开始     
      else
      {
        for(j = a[0] ; j > 0 ; --j)
           printf("%d",a[j]);
         printf("\n"); 
       
      }//else
  }//for(i)
}

原文地址:https://www.cnblogs.com/HpuAcmer/p/2262385.html