C,C++
조합 알고리즘
권멋져
2022. 5. 9. 23:22
가끔 쓰는데가 있어서 여따 올린다
unsigned long long func(int a, int b)
{
int nChoose = 0, kChoose = 0;
unsigned long long p = 1, q = 1;
if (b == 0 || a == b)
return 1;
if (a - b > b)
{
nChoose = a - b;
kChoose = b;
}
else
{
kChoose = a - b;
nChoose = b;
}
//nCk or nCn-k
for (int j = 1; j <= a; j++)
{
if (nChoose < j)
p *= j; //n*..*k+1
if (kChoose >= j)
q *= j; // k!
}
return p / q;
}