Ir para conteúdo
Fórum Script Brasil
  • 0

Problema da mochila Fracionaria


Psyhclo

Pergunta

Ola, estou implementando esse algoritmo do problema da mochila fracionaria, so que quando eu entro com os itens, ele pega o primeiro valor que ele acha q seja menor que a capacidade da mochila, por exemplo, se a capacidade e 10, e eu entrei com 4 itens, {10,3,6,2} ele pega o 3 e ainda repete o valor do primeiro item em todos os itens q ele pegou.

Segue o codigo:

#include<stdio.h>
    #include<stdlib.h>
    int n, *valor, capacidade, *peso, i=0, *x, k, m, total;
    main(){
           printf("Entre com a capacidade da mochila:\n");      
           scanf("%d",&capacidade); 
           printf("Entre com o numero de itens:\n");      
           scanf("%d",&n);
           peso = malloc (n * sizeof(int));
           valor = malloc (n * sizeof(int));
           x = malloc(n * sizeof(int));
           printf("Entre com o peso de cada item:\n");
           for(i=0;i<n;i++){
                 scanf(" %d",&peso[i]);
           }
           printf("Entre com o valor de cada item:\n");
           for(i=0;i<n;i++){
                 scanf(" %d",&valor[i]);
           }
           printf("Peso de cada item:\n");
           for(i=0;i<n;i++){
                 printf(" %d |",peso[i]);
           }
            printf("\nValor de cada item:\n");
           for(i=0;i<n;i++){
                 printf(" %d |",valor[i]);
           }
    for(i=0;i<n;i++){
    while (n >= 1 && peso[i] <= capacidade) {
               x[n] = 1; //insere o item na mochila
               capacidade = capacidade - peso[i]; //decrementa a capacidade
               n--; //decrementa itens
               printf("\n\nItem %d.Valor. %d", n, valor[i]);
               printf("\n\nCapacidade disponivel na mochila: %d",capacidade);  
               if (n >= 1) {
                   x[n] = capacidade / peso[n]; //avalia se o item cabe na mochila
                   for (k = n - 1; k < n; k--) {
                       if(k==0)break;
                           x[k] = 0;//os espaços não preênchidos recebem 0
                   }
               }
                
           }
           
    }

Valeu!!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...