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); } }