Er zijn n identieke kaarten van type A, n van type B, n van type C en n van type D. Er zijn 4 personen die elk n kaarten moeten ontvangen. Op hoeveel manieren kunnen we de kaarten verdelen?

Er zijn n identieke kaarten van type A, n van type B, n van type C en n van type D. Er zijn 4 personen die elk n kaarten moeten ontvangen. Op hoeveel manieren kunnen we de kaarten verdelen?
Anonim

Antwoord:

Hieronder vindt u een idee hoe u dit antwoord kunt benaderen:

Uitleg:

Ik geloof dat het antwoord op de vraag van methodologie over het doen van dit probleem is dat combinaties met identieke items binnen de populatie (zoals het hebben van # 4n # kaarten met # N # aantal typen A, B, C en D) valt buiten het vermogen van de combinatieformule om te berekenen. In plaats daarvan, volgens Dr. Math op mathforum.org, heb je uiteindelijk een paar technieken nodig: het verdelen van objecten in verschillende cellen, en het inclusie-uitsluitingsprincipe.

Ik heb dit bericht gelezen (http://mathforum.org/library/drmath/view/56197.html) dat zich rechtstreeks bezighoudt met de vraag hoe dit type probleem steeds opnieuw moet worden berekend en het netto resultaat is dat het antwoord ligt daar ergens, ik zal hier niet proberen een antwoord te geven. Ik ben hoopvol dat een van onze deskundige wiskundegoeroes kan instappen en je een beter antwoord kan geven.

Antwoord:

Een telprogramma in C levert de volgende resultaten op:

Uitleg:

#include

int main ()

{

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

int kam 5000 4;

lange telling;

voor (n = 1; n <= 20; n ++)

{

numcomb = 0;

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

{

comb numcomb 0 = i;

kam numcomb 1 = j;

kam numcomb 2 = k;

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

numcomb ++;

}

aantal = 0;

voor (i = 0; i<>

{

voor (j = 0; j<>

{

br = 0;

voor (t = 0; t <4; t ++) als (kam i t + kam j t> n) br = 1;

als (! br)

{

voor (k = 0; k<>

{

br2 = 0;

voor (t = 0; t <4; t ++) als (kam i t + kam j t + kam k t> n) br2 = 1;

if (! br2)

{

tel ++;

}

}

}

}

}

printf (" nCount voor n =% d:% ld.", n, count);

}

printf (" n");

return (0);

}