08/02/01 23:01:55
>>858
unsigned long combination(int n, int k)
{
int i, j;
unsigned long a[17];
if (n - k < k) k = n - k;
if (k == 0) return 1;
if (k == 1) return n;
if (k > 17) return 0; /* error */
for (i = 1; i < k; i++) a[i] = i + 2;
for (i = 3; i <= n - k + 1; i++) {
a[0] = i;
for (j = 1; j < k; j++) a[j] += a[j - 1];
}
return a[k - 1];
}