存在n个类型A的卡,类型B的n,类型C的n和类型D的n。有4个人每个都必须接收n个卡。我们可以通过多少种方式分发卡片?

存在n个类型A的卡,类型B的n,类型C的n和类型D的n。有4个人每个都必须接收n个卡。我们可以通过多少种方式分发卡片?
Anonim

回答:

请参阅下文,了解如何处理此答案:

说明:

我认为解决这个问题的方法问题的答案是人口中具有相同项目的组合(例如具有 #4N# 卡片 #N# 类型A,B,C和D的数量超出组合公式计算的能力。相反,根据Mathforum.org上的Math博士的说法,您最终需要几种技术:将对象分配到不同的单元格中,以及包含 - 排除原则。

我已经阅读了这篇文章(http://mathforum.org/library/drmath/view/56197.html),它直接涉及如何一遍又一遍地计算这类问题的问题,最终结果是答案就在于某个地方,我不会试图在这里给出答案。我希望我们的专业数学专家可以介入并为您提供更好的答案。

回答:

C中的计数程序产生以下结果:

说明:

#包括

int main()

{

int n,i,j,k,t,br,br2,numcomb;

int comb 5000 4;

长计;

为(N = 1; N <= 20; N ++)

{

numcomb = 0;

for(i = 0; i <= n; i ++)for(j = 0; j <= n-i; j ++)for(k = 0; k <= n-i-j; k ++)

{

comb numcomb 0 = i;

comb numcomb 1 = j;

comb numcomb 2 = k;

comb numcomb 3 = n-i-j-k;

numcomb ++;

}

count = 0;

对于(I = 0;我<>

{

对于(j = 0;Ĵ<>

{

br = 0;

for(t = 0; t <4; t ++)if(comb i t + comb j t> n)br = 1;

如果(!br)

{

为(K = 0; k<>

{

br2 = 0;

for(t = 0; t <4; t ++)if(comb i t + comb j t + comb k t> n)br2 = 1;

如果(!br2)

{

计数++;

}

}

}

}

}

printf(“ nCount for n =%d:%ld。”,n,count);

}

的printf( “ n”);

返回(0);

}