Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
2.8 kB
8
Indexable
Never
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author novke
 */
public class Test1 {
    public static int resenje = -1;
    static Test1 t1 = new Test1();
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        
  System.out.println("haha");
  
  int[] A = {1000, 1000, 5, 5, 5, 2, 2, 2, 0, 0};
  List<broj> lista = t1.napuni(A);
  ispisi(lista);
      isprazni(lista, 0);
      System.out.println(resenje + "");
    }
  public class broj {
      public int koji;
      public int pon = 1;
      
      public broj(int i){
          koji = i;
      }

        @Override
        public int hashCode() {
            int hash = 5;
            return hash;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            final broj other = (broj) obj;
            return this.koji == other.koji;
        }
      
      
  }  
    
  private List<broj> napuni(int[] niz){
      List<broj> lista = new LinkedList<>();
      
      for (int x: niz){
          if (lista.contains(new broj(x))){
              for (broj y: lista) if (x==y.koji){
                  y.pon++;
                  break;
              }
          } else lista.add(new broj(x));
      }      
      return lista;
  }
  
  public static void ispisi(List<broj> l){
      for (broj b: l) System.out.print(b.koji + " ");
      System.out.println("");
      for (broj b: l) System.out.print(b.pon + " ");
      System.out.println("");
  }
  
  public static boolean jelSveOk(List<broj> lista){
      for (broj b1: lista){
          for (broj b2: lista){
          if (b1.pon==b2.pon && !b1.equals(b2)) return false;
      }
      }
      return true;
  }
  
  public static void isprazni(List<broj> lista, int rezultat){
      
      
      for (int i = 0; i < lista.size(); i++){
          for (int j = i; j < lista.size(); j++){
              if (lista.get(i).pon==lista.get(j).pon && !lista.get(i).equals(lista.get(j))){
                  lista.get(i).pon--;
                  rezultat++;
                  if (lista.get(i).pon==0) lista.remove(i);
                  if (jelSveOk(lista)) {
                      resenje = rezultat;
                      return;
                  } else {
                      isprazni(lista, rezultat);
                      return;
                  }
              }
          }
      }
  }

    }