You are on page 1of 4

/*

* To change this template, choose Tools | Templates


* and open the template in the editor.
*/
package knapsack;
/**
*
* @author Mahasiswa
*/
import java.util.Scanner;
public class knapsack {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner masuk=new Scanner(System.in);
int panjang, bebanmax;
System.out.print("Input banyak data :");
panjang=masuk.nextInt();
System.out.print("Input beban maksimum :");
bebanmax=masuk.nextInt();
int knap[][]=new int[panjang][3];
double dens[][]=new double[panjang][1];
int i;
for(i=0; i<panjang; i++)
{
System.out.print("Input weight ke-"+(i+1)+":");
knap[i][0]=masuk.nextInt();
System.out.print("Input profit ke-"+(i+1)+":");
knap[i][1]=masuk.nextInt();
dens[i][0]=(double)knap[i][1]/(double)knap[i][0];
System.out.println();
}
//menampilkan data
System.out.println();
System.out.println("No\tWeight\tProfit\tDensity");
for(i=0; i<panjang; i++)
{
System.out.println((i+1)+"\t"+knap[i][0]+"\t"+knap[i][1]+"\t"+dens[i
][0]);
}
//pemilihan metode
int z=panjang;
int temp1, temp2, temp3;
double temp4;
int pilihan, j;
System.out.println();
System.out.println("Pilih metode penyelesaian");
System.out.println("1. Greedy by Weight");
System.out.println("2. Greedy by Profit");
System.out.println("3. Greedy by Density");
System.out.print("Masukkan pilihan [1-3] : ");
pilihan=masuk.nextInt();

switch(pilihan)
{
case 1:
System.out.println("Greedy by Weight");
for(i=1; i<z; i++)
{
for(j=0; j<z-i; j++)
{
if(knap[j][0]>knap[j+1][0])
{
temp1=knap[j][0];
knap[j][0]=knap[j+1][0];
knap[j+1][0]=temp1;
}
}
}
//status pengambilan
int testweight=0;
int totalweight=0;
for(i=0; i<panjang; i++)
{
if(testweight+knap[i][0]<=bebanmax)
{
testweight=knap[i][0]+testweight;
totalweight=totalweight+knap[i][0];
knap[i][2]=1;
System.out.println((i+1)+"\t"+knap[i][0]+"\t"+knap[i][2]
);
}
else
{
knap[i][2]=0;
System.out.println((i+1)+"\t"+knap[i][0]+"\t"+knap[i][2]
);
}
}
System.out.println("Total bobot :"+totalweight);
break;
case 2:
System.out.println("Greedy by Profit");
for(i=1; i<z; i++)
{
for(j=0; j<z-i; j++)
{
if(knap[j][1]<knap[j+1][1])
{
temp2=knap[j][1];
knap[j][1]=knap[j+1][1];
knap[j+1][1]=temp2;
temp3=knap[j][0];
knap[j][0]=knap[j+1][0];
knap[j+1][0]=temp3;
}
}
}

//status pengambilan
int testprofit=0;
int totalprofit=0;
int totalw=0;
for(i=0; i<panjang; i++)
{
if(testprofit+knap[i][0]<=bebanmax)
{
testprofit=knap[i][0]+testprofit;
totalprofit=totalprofit+knap[i][1];
totalw += knap[i][0];
knap[i][2]=1;
System.out.println((i+1)+"\t"+knap[i][1]+"\t"+knap[i][2]
);
}
else
{
knap[i][2]=0;
System.out.println((i+1)+"\t"+knap[i][1]+"\t"+knap[i][2]
);
}
}
System.out.println("Total profit :"+totalprofit);
System.out.println("Total bobot :"+totalw);
break;
case 3:
System.out.println("Greedy by Density");
for(i=1; i<z; i++)
{
for(j=0; j<z-i; j++)
{
if(dens[j][0]<dens[j+1][0])
{
temp4=dens[j][0];
dens[j][0]=dens[j+1][0];
dens[j+1][0]=temp4;
temp2=knap[j][1];
knap[j][1]=knap[j+1][1];
knap[j+1][1]=temp2;
temp3=knap[j][0];
knap[j][0]=knap[j+1][0];
knap[j+1][0]=temp3;
}
}
}
//status pengambilan
int testdens=0;
double totaldens=0;
int totalp=0;
totalw=0;
for(i=0; i<panjang; i++)
{
if(testdens+knap[i][0]<=bebanmax)
{
testdens=knap[i][0]+testdens;
totaldens=(double)totaldens+(double)dens[i][0];
totalw=totalw+knap[i][0];

totalp=totalp+knap[i][1];
knap[i][2]=1;
System.out.println((i+1)+"\t"+dens[i][0]+"\t"+knap[i][2]
);
}
else
{
knap[i][2]=0;
System.out.println((i+1)+"\t"+dens[i][0]+"\t"+knap[i][2]
);
}
}
System.out.println("Total Density :"+totaldens);
System.out.println("Total bobot :"+totalw);
System.out.println("Total profit :"+totalp);
break;
default:
System.out.println("Tidak ada metode");
}
}
}

You might also like