Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.Arrays;
- public class Main {
- public static void main(String [] args) {
- Scanner in = new Scanner(System.in);
- int n;
- int limit;
- System.out.println("Enter the number of elements for the array.");
- n = in.nextInt();
- System.out.println("Enter the limit of the knapsack.");
- limit = in.nextInt();
- double [] array1 = new double[n];
- System.out.println("Enter the elements in the array.");
- for(int i=0; i<n; i++)
- array1[i] = in.nextDouble();
- double [] packet1 = new double[n]; // worst case scenario
- System.out.println("BEFORE SORTING");
- for(int i=0; i<array1.length; i++)
- System.out.print(array1[i] + " ");
- Arrays.sort(array1);
- System.out.println("\nAFTER SORTING");
- for(int i=0; i<array1.length; i++)
- System.out.print(array1[i] + " ");
- int tmp = array1.length;
- for(int i=0; i<array1.length; i++) {
- if(i==(array1.length/2) && array1.length % 2 == 1) {
- packet1[i] = array1[i];
- break;
- }
- if (array1[i] + array1[tmp-1] <= limit) {
- packet1[i] = array1[i] + array1[tmp - 1];
- }
- else if (packet1[i] + array1[i] <= 1)
- packet1[i] = array1[i] + packet1[i];
- else
- packet1[i] = array1[i];
- tmp--;
- if(i == (array1.length/2)-1 && array1.length % 2 == 0)
- break;
- }
- int counter=0;
- for(int i=0; i<packet1.length; i++)
- if(packet1[i]>0)
- counter++;
- double [] knapsack = new double[counter];
- for(int i=0; i<counter; i++)
- knapsack[i] = packet1[i];
- System.out.println("\nAFTER ADDING");
- for(int i=0; i<knapsack.length; i++)
- System.out.print(knapsack[i] + " ");
- }
- }
Add Comment
Please, Sign In to add comment