Esempio n. 1
0
        public void solucionar(int num_itens)
        {
            Itens = Extras.gerarPesoValor(num_itens);

            int[] a       = new int[60000];
            int[] inserir = new int[60000];
            int   aux     = 0;

            if (qtd_capacidade_mochila >= 10 && qtd_capacidade_mochila <= 20)
            {
                for (int i = 0; i <= qtd_capacidade_mochila; ++i)
                {
                    a[i]       = 0;
                    inserir[i] = -1;
                }
                a[0] = 0;
                //começa a calcular a quantidade de itens na loja
                for (int i = 1; i <= qtd_capacidade_mochila; ++i)
                {
                    for (int j = 0; j < Itens.GetLength(0); ++j)
                    {
                        if ((peso[j] <= i) && (a[i] < a[i - peso[j]] + valor[j]))
                        {
                            a[i]       = a[i - peso[j]] + valor[j];
                            inserir[i] = j;
                        }
                    }
                }
                aux = capMochila;
                while ((aux > 0) && (inserir[aux] != -1))
                {
                    aux -= peso[inserir[aux]];
                }
                MessageBox.Show("Valor total carregado na Mochila R$ " + a[capMochila] + ".", "Algoritmo Dinâmico - Solução Dinâmica",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("A capacidade da Mochila é imcompatível!\nA capacidade deve ser entre 10 a 20.",
                                "Capacidade Incompatível", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }