Esempio n. 1
0
int mochila( int idx , int n , int peso , int valor , struct item itens[] )
{
	if( idx == n )
	{
		if( peso < 0 )
		{
			return 0;
		}
		return valor;
	}
	else
	{
		return max( mochila(idx+1,n, peso,valor,itens) , mochila(idx+1,n,peso - itens[idx].peso , valor + itens[idx].valor , itens ) );
	}
}
Esempio n. 2
0
void mochila( int idx , int n , int peso , int valor , int * ans , struct item itens[] )
{
	if( idx == n )
	{
		if( peso >= 0 )
		{
			if( *ans < valor )
			{
				*ans = valor;
			}
		}
	}
	else
	{
		mochila( idx+1 , n, peso , valor, ans , itens );
		mochila( idx+1 , n, peso - itens[idx].peso , valor + itens[idx].valor , ans , itens );
	}
}
Esempio n. 3
0
int main() {

	double p[N] = {4, 3, 2};
	double v[N] = {30, 20, 10};
	double peso = 8;
	double valor = 0;
	double parte = 1;

	int paso = 0;

	mochila(p,v,N,paso,peso,valor,parte);

std:: cout << paso << " " << peso << " " << valor << " " << parte ;

	return 0;
}
Esempio n. 4
0
void mochila (double p[], double v[], int n, int& paso, double& peso, double& valor, double& parte) {
	if (paso != n) {
		if (p[paso] < peso) {
			peso -= p[paso];
			valor += v[paso];
			paso++;
			mochila(p,v,n,paso,peso,valor,parte);
		}
		else {
			parte = peso / p[paso];
			valor += v[paso] * parte;
			peso = 0;
			paso++;
			//fin
		}
	}
	//else fin
}
Esempio n. 5
0
int main(int argc, char const *argv[])
{
	int quantidade, capacidade;
	scanf("%d%d", &quantidade, &capacidade);
	struct item itens[quantidade];
	int i;
	for ( i = 0; i < quantidade ; ++i)
	{
		scanf("%d" , &itens[i].valor );
	}
	for ( i = 0; i < quantidade ; ++i)
	{
		scanf("%d" , &itens[i].peso );
	}

	printf("%d\n",  mochila(0,quantidade,capacidade,0,itens) );

	return 0;
}