厦大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]