#include <stdio.h>
void CombNumber(int a[], int m, int n, int h, int *count);
int main()
{
int m, n;
int count = 0;
static int Res[100];
printf("Please input the number m and n :/n");
scanf("%d%d", &m, &n);
printf("The combination number is :/n");
CombNumber(Res, m, n, 0, &count);
printf("The res has %d ways:/n", count);
puts("");
return 0;
}
void CombNumber(int Res[], int m, int n, int h, int *count)
{
int i = 0, j = 0, k = 0;
if(n == h) //条件成立打印结果
{
(*count)++;
for(i = 0; i <= h; ++i)
{
printf("%d", Res[i]);
}
printf("/b/t");
return;
}
for(j = 1; j <= m; ++j)
{
for(k = 0; k < h; ++k)
{
if(j == Res[k] /*|| Res[k] > j*/) //判断当前数字是否已在结果数组中
{
break;
}
}
if(k >= h)
{
Res[h] = j;
CombNumber(Res, m, n, h + 1, count);
}
}
}
/*
Please input the number m and n :
5 3
The combination number is :
123 124 125 132 134 135 142 143 145 152
153 154 213 214 215 231 234 235 241 243
245 251 253 254 312 314 315 321 324 325
341 342 345 351 352 354 412 413 415 421
423 425 431 432 435 451 452 453 512 513
514 521 523 524 531 532 534 541 542 543
The res has 60 ways:
Press any key to continue
*/