排列组合问题: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;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM