评论

收藏

[C++] 厦大C语言上机 1395 组合

编程语言 编程语言 发布于:2021-07-10 14:53 | 阅读数:306 | 评论:0

  1395.组合


时间限制: 1000 MS          内存限制: 65536 K
        
提交数: 362 (0 users)          通过数: 229 (221 users)


问题描述
给1到N,N个数,要你从中选取M个出来,请输出每一种的选取情况(根据序列字典序输出,即两个序列比大小,第一位小的小,若相等第二位小的小,若相等第三位小的小……)。


输入格式
输入一行,包括两个整数N,M。(2<M<N<10)


输出格式
输出若干行,每行表示一个组合方式,按字典序输出。


样例输入
4 3


样例输出
1 2 3
1 2 4
1 3 4
2 3 4


来源
  xmu
#include <stdio.h>
int perm[15] = { 0 };
int ptr_perm = 0;
int has_chosen[15] = { 0 };
void permutation(int n, int m, int k)
{
  if (m == 0)
  {
    int i;
    for (i = 0; i < ptr_perm; ++i)
      printf("%d ", perm[i]);
    printf("\n");
    return;
  }
  int i;
  for (i = k; i <= n; ++i)
  {
    if (!has_chosen[i])
    {
      perm[ptr_perm++] = i;
      has_chosen[i] = 1;
      permutation(n, m - 1, i + 1);
      has_chosen[i] = 0;
      ptr_perm--;
    }
  }
}
int main()
{
  int n, m;
  scanf("%d %d", &n, &m);
  permutation(n, m, 1);
  return 0;
}



  
关注下面的标签,发现更多相似文章