Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- /**
- * Created by gasper on 5/23/15.
- */
- public class Izziv10 {
- public static void main(String[] args){
- int itemCount = Integer.parseInt(args[0]);
- List<Vozlisce> vozl = new ArrayList<Vozlisce>();
- List<Vozlisce> vozlNe = new ArrayList<Vozlisce>();
- vozlNe.add(new Vozlisce(0, 0));
- Scanner s = new Scanner(System.in);
- for (int i = 0; i < itemCount; i++) {
- vozl.add(new Vozlisce(s.nextInt(), 0));
- }
- for (int i = 0; i < itemCount; i++) {
- vozl.get(i).setCena(s.nextInt());
- }
- int max = s.nextInt();
- //printBackPack(vozl);
- List<Vozlisce> dodamo = new ArrayList<Vozlisce>();
- // 4 2 3 7 5 2 3 9 8
- for (int i = 0; i < vozl.size(); i++) {
- //vse od spodi damo gor
- List<Vozlisce> tmp = copyVozlisce(vozlNe);
- for (int k = 0; k < dodamo.size(); k++) {
- int v1 = dodamo.get(k).getVol();
- int c1 = dodamo.get(k).getCena();
- boolean dodaj = true;
- int helper = 0;
- for (int j = 0; j < tmp.size(); j++) {
- int v2 = tmp.get(j).getVol();
- int c2 = tmp.get(j).getCena();
- if(v1 == v2 && c1 < c2 || c1 == c2 && v2 < v1 || v1 > v2 && c1 <= c2){
- dodaj = false;
- System.out.printf("Odstranimo (%d, %d)\n", v1, c1);
- }else if(dodaj && (v1 == v2 && c1 > c2 || c1 == c2 && v1 < v2 || v1 < v2 && c1 >= c2)){
- System.out.printf("Odstranimo (%d, %d)\n", v2, c2);
- vozlNe.get(j).setCena(c1);
- vozlNe.get(j).setVol(v1);
- dodaj = false;
- // tmp = copyVozlisce(vozlNe);
- }
- helper++;
- }
- if(dodaj){
- vozlNe.add(new Vozlisce(dodamo.get(k).getVol(), dodamo.get(k).getCena()));
- sort(vozlNe);
- }
- }
- //če dodamo
- //ne dodamo listu dodaj vse iz dodaj in sortiraj
- // if(dodamo.size() != 0){
- // for (int k = 0; k < dodamo.size(); k++) {
- // dodamo.get(k).setCena(dodamo.get(k).getCena()+vozl.get(i).getCena());
- // dodamo.get(k).setVol(dodamo.get(k).getVol() + vozl.get(i).getVol());
- // }
- // }
- dodamo.removeAll(dodamo);
- for (int j = 0; j < vozlNe.size(); j++) {
- if(vozlNe.get(j).getVol()+vozl.get(i).getVol() <= max){
- dodamo.add(new Vozlisce(vozlNe.get(j).getVol()+vozl.get(i).getVol(), vozlNe.get(j).getCena() + vozl.get(i).getCena()));
- }
- }
- // dodamo.add(new Vozlisce(vozl.get(i).getVol(), vozl.get(i).getCena()));
- sort(dodamo);
- //System.out.println("-----------------ne dodamo------------------");
- printBackPack(vozlNe, i);
- // System.out.println("-----------------dodamo------------------");
- // printBackPack(dodamo, i);
- }
- // printBackPack(dodamo, 0);
- List<Vozlisce> tmp = copyVozlisce(vozlNe);
- for (int k = 0; k < dodamo.size(); k++) {
- int v1 = dodamo.get(k).getVol();
- int c1 = dodamo.get(k).getCena();
- boolean dodaj = true;
- for (int j = 0; j < tmp.size(); j++) {
- int v2 = tmp.get(j).getVol();
- int c2 = tmp.get(j).getCena();
- if(dodaj && (v1 == v2 && c1 < c2 || c1 == c2 && v2 < v1 || v1 > v2 && c1 <= c2)){
- dodaj = false;
- System.out.printf("Odstranimo (%d, %d)\n", v1, c1);
- }else if(dodaj && (v1 == v2 && c1 > c2 || c1 == c2 && v1 < v2 || v1 < v2 && c1 >= c2)){
- System.out.printf("Odstranimo (%d, %d)\n", v2, c2);
- vozlNe.remove(j);
- // tmp = copyVozlisce(vozlNe);
- }
- }
- if(dodaj){
- vozlNe.add(new Vozlisce(dodamo.get(k).getVol(), dodamo.get(k).getCena()));
- sort(vozlNe);
- }
- }
- printBackPack(vozlNe, -1);
- }
- public static List<Vozlisce> copyVozlisce(List<Vozlisce> vozl){
- List<Vozlisce> rtrn = new ArrayList<Vozlisce>();
- for (int i = 0; i < vozl.size(); i++) {
- rtrn.add(new Vozlisce(vozl.get(i).getVol(), vozl.get(i).getCena()));
- }
- return rtrn;
- }
- public static void printBackPack(List<Vozlisce> arr, int st){
- if(st > -1) System.out.print(st + ": ");
- for (int i = 0; i < arr.size(); i++) {
- System.out.printf("(%d, %d) ", arr.get(i).getVol(), arr.get(i).getCena());
- }
- System.out.println();
- }
- public static void sort(List<Vozlisce> arr){
- for (int i = 0; i < arr.size()-1; i++) {
- for (int j = i+1; j < arr.size(); j++) {
- if(arr.get(j).getVol() < arr.get(i).getVol()){
- Vozlisce tmp = arr.get(i);
- arr.set(i, arr.get(j));
- arr.set(j, tmp);
- }
- }
- }
- }
- }
- class Vozlisce {
- private int vol;
- private int cena;
- public Vozlisce(int v, int c) {
- this.vol = v;
- this.cena = c;
- }
- public int getVol() {
- return vol;
- }
- public void setVol(int vol) {
- this.vol = vol;
- }
- public int getCena() {
- return cena;
- }
- public void setCena(int cena) {
- this.cena = cena;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement