影者东升 发表于 2021-7-10 14:53:08

厦大C语言上机 1395 组合

  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 = { 0 };
int ptr_perm = 0;
int has_chosen = { 0 };

void permutation(int n, int m, int k)
{
    if (m == 0)
    {
      int i;
      for (i = 0; i < ptr_perm; ++i)
            printf("%d ", perm);
      printf("\n");
      return;
    }

    int i;
    for (i = k; i <= n; ++i)
    {
      if (!has_chosen)
      {
            perm = i;
            has_chosen = 1;
            permutation(n, m - 1, i + 1);
            has_chosen = 0;
            ptr_perm--;
      }
    }
}

int main()
{
    int n, m;

    scanf("%d %d", &n, &m);
    permutation(n, m, 1);

    return 0;
}




  
文档来源:51CTO技术博客https://blog.51cto.com/liulizhi1996/3032794
页: [1]
查看完整版本: 厦大C语言上机 1395 组合