Code:
import java.io.IOException;
import java.util.Scanner;
class Fractional_Knapsack
{
public static void main(String args[]) throws IOException
{
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
array[0][i]=sc.nextInt();
System.out.println("Enter the values of each items");
for(i=0;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
{
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();
}
}
Output:
Enter no of items
5
Enter the weights of each items
10 20 30 40 50
Enter the values of each items
5 4 3 2 1
Enter maximum volume of knapsack :
80
Quantity of item number: 1 added is 10
Quantity of item number: 2 added is 20
Quantity of item number: 3 added is 30
Quantity of item number: 4 added is 20
The total profit is 13.0
More Java Programs: