Knapsack problem using Greedy method.

In This post we are Knapsack problem using Greedy method.

4] To solve Knapsack problem using Greedy method.

PROGRAM :-

import java.util.Scanner;

public class Knapsack {

    public static void main(String[] args)

    {

        int i, j = 0, max_qty, m, n;

        float sum = 0, max;

        Scanner sc = new Scanner(System.in);

        int array[][] = new int[2][20];

        System.out.println("Enter no of items");

        n = sc.nextInt();

        System.out.println("Enter the weights of each items");

        for (i = 0; i < n; i++)

            array[0][i] = sc.nextInt();

        System.out.println("Enter the values/profits of each items");

        for (i = 0; i < n; i++)

            array[1][i] = sc.nextInt();

        System.out.println("Enter maximum volume of knapsack :");

        max_qty = sc.nextInt();

        m = max_qty;

        while (m >= 0)

        {

            max = 0;

            for (i = 0; i < n; i++)

            {

                if ((((float) array[1][i]) / ((float) array[0][i])) > max)

                {

                    max = ((float) array[1][i]) / ((float) array[0][i]);

                    j = i;

                }

            }

            if (array[0][j] > m)

            {

                System.out.println("Quantity of item number: " + (j + 1) + " added is " + m);

                sum += m * max;

                m = -1;

            }

            else

            {

                System.out.println("Quantity of item number: " + (j + 1) + " added is " + array[0][j]);

                m -= array[0][j];

                sum += (float) array[1][j];

                array[1][j] = 0;

            }

            System.out.println("The total profit is " + sum);

            sc.close();

        }

    }

}

Leave a Reply

Your email address will not be published. Required fields are marked *