排列组合问题:n个数中取k个数

Posted 蜗牛不快

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排列组合问题:n个数中取k个数相关的知识,希望对你有一定的参考价值。

/***********************************
*有0~n-1共n个数,从其中任取k个数,
*已知这k个数的和能被n整除,求这样的
*k个数的组合的个数sum,
*输入:n,k
*输出:符合条件的个数sum
************************************/

#include <malloc.h>
#include <iostream>
#include <stdio.h>
using namespace std;

int k, *a, n;
int sum = 0;//记录符合条件的个数

void combination(int p, int m)
{
int i;
int temp;
if (m < k)
{
for (i = p - 1; i >= k - m - 1; i--)
{
a[m] = i;
combination(i, m + 1);
}
}
else
{
temp = 0;
for (i = 0; i < k; i++)
{
temp += a[i];
cout << a[i];
}
if (temp%n == 0)
{
sum++;
}
cout << endl << temp << endl;
}
}

int main()
{
// int n;

scanf_s("%d%d", &n, &k);
a = (int*)malloc(sizeof(int)*k);
combination(n, 0);
cout << sum << endl;
system("pause");
return 0;
}

以上是关于排列组合问题:n个数中取k个数的主要内容,如果未能解决你的问题,请参考以下文章

温习全排列

算法-递归-排列组合

M个数任选N个数(N<M)这样的公式是啥

一个组合问题

算法学习——递归和排列组合

排列和组合函数