57 lines
1.7 KiB
Java
57 lines
1.7 KiB
Java
|
/*
|
||
|
This is the java implementation of classic Bin-Packing algorithm. In the bin packing problem, objects of different volumes must be packed into a finite number of bins or containers each of volume V in a way that minimizes the number of bins used. In computational complexity theory, it is a combinatorial NP-hard problem.
|
||
|
*/
|
||
|
|
||
|
//This is a sample program to illustrate the Bin-Packing algorithm using next fit heuristics
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
public class Bin_Packing_Algorithm
|
||
|
{
|
||
|
public static void binPacking(int []a, int size, int n)
|
||
|
{
|
||
|
int binCount=1;
|
||
|
int s = size;
|
||
|
for(int i=0; i<n; i++)
|
||
|
{
|
||
|
if(s - a[i] > 0)
|
||
|
{
|
||
|
s -= a[i];
|
||
|
continue;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
binCount++;
|
||
|
s = size;
|
||
|
i--;
|
||
|
}
|
||
|
}
|
||
|
System.out.println("Number of bins required: "+binCount);
|
||
|
}
|
||
|
|
||
|
public static void main(String args[])
|
||
|
{
|
||
|
System.out.println("BIN - PACKING Algorithm");
|
||
|
System.out.println("Enter the number of items in Set: ");
|
||
|
Scanner sc = new Scanner(System.in);
|
||
|
int n = sc.nextInt();
|
||
|
System.out.println("Enter "+n+" items:");
|
||
|
int []a = new int[n];
|
||
|
for(int i=0; i<n; i++)
|
||
|
a[i] = sc.nextInt();
|
||
|
System.out.println("Enter the bin size: ");
|
||
|
int size = sc.nextInt();
|
||
|
binPacking(a, size, n);
|
||
|
sc.close();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
BIN - PACKING Algorithm
|
||
|
Enter the number of items in Set:
|
||
|
8
|
||
|
Enter 8 items:
|
||
|
4 5 8 3 4 5 1 6
|
||
|
Enter the bin size:
|
||
|
10
|
||
|
|
||
|
Number of bins required: 5
|