bom, a def. do seu problema cont�m um erro, voc�
est� pedindo para retornar uma combina��o de n �ndices, ou seja s� existe
uma!
mas tudo bem, acho que voc� tem a liberdade de usar
quantos elementos quiser do vetor p.
pense que voc� tem um vetor r com n
elementos.
void
mochila(int P, int*
p, int* r, int
i, int n)
{
if ( i < n )
{
/* coloca o i'�simo item na
mochila */ r[i]
= 1;
/* o peso adicional que deve ser colocado � P -
p[i] */
mochila( P - p[i], p, r, i + 1, n );
/* n�o coloca o i'�simo item na
mochila */
r[i]
= 0;
mochila( P, p, r, i + 1, n );
}
else if ( P ==
0 )
{
/* Imprime os itens
inseridos */
for ( int j = 0; j < n;
j++ )
{
printf( "Combina��o encontrada: \n" );
printf( "p%d ", j );
if (
r[j] )
}
}
return;
}
chame a fun��o dessa forma:
mochila( P, p, r, 0, n );
pode haver algum erro pq eu fiz sem testar, mas
deve rodar.
|