Ci sono n carte identiche di tipo A, n di tipo B, n di tipo C e n di tipo D. Ci sono 4 persone che ognuno deve ricevere n carte. In quanti modi possiamo distribuire le carte?

Ci sono n carte identiche di tipo A, n di tipo B, n di tipo C e n di tipo D. Ci sono 4 persone che ognuno deve ricevere n carte. In quanti modi possiamo distribuire le carte?
Anonim

Risposta:

Vedi sotto per un'idea su come affrontare questa risposta:

Spiegazione:

Credo che la risposta alla domanda di metodologia su come fare questo problema sia Combinazioni con oggetti identici all'interno della popolazione (come l'avere # # 4n carte con # N # numero di tipi A, B, C e D) non rientra nella capacità della formula combinata di calcolare. Invece, secondo il Dr. Math di mathforum.org, si finisce per avere bisogno di un paio di tecniche: la distribuzione di oggetti in celle distinte e il principio di esclusione-inclusione.

Ho letto questo post (http://mathforum.org/library/drmath/view/56197.html) che tratta direttamente la domanda su come calcolare questo tipo di problema più e più volte e il risultato netto è che mentre la risposta sta lì da qualche parte, non cercherò di dare una risposta qui. Spero che uno dei nostri esperti guru della matematica possa intervenire e darti una risposta migliore.

Risposta:

Un programma di conteggio in C produce i seguenti risultati:

Spiegazione:

#includere

int main ()

{

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

int comb 5000 4;

lungo conto;

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

{

numcomb = 0;

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

{

pettine numcomb 0 = i;

pettine numcomb 1 = j;

pettine numcomb 2 = k;

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

numcomb ++;

}

count = 0;

for (i = 0; i<>

{

for (j = 0; j<>

{

br = 0;

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

se (! br)

{

for (k = 0; k<>

{

br2 = 0;

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

se (! br2)

{

contare ++;

}

}

}

}

}

printf (" nConta per n =% d:% ld.", n, conta);

}

printf (" n");

ritorno (0);

}