int fire(int n, int num)
{
if ((num>n*10)||(num<0)||(n<1))
return 0;
if (n==1)
return 1;
else
{
int m = 0;
for (int i=0; i<=10; i++)
m += fire(n-1, num-i);
return m;
}
}
就是C(19,9)
int a[10];
void main()
{
int i = 1, sum = 0, count=0, flag = 0;
while (i > 0) {
if (!flag) {
a[i] = sum+10*i;
sum -= a[i++];
if (i == 10)
flag = 1;
}
else {
if (i == 10)
count ++;
sum += a[--i];
if (a[i-1] != 10)
{
flag = 0;
a[i-1] ++;
sum --;
}
}
}
printf("total: %d\n", count);
}