kristina7

Проверка на парност

Jan 17th, 2017
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.06 KB | None | 0 0
  1.  
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. class SLLNode<E> {
  7.     protected E element;
  8.     protected SLLNode<E> succ;
  9.  
  10.     public SLLNode(E elem, SLLNode<E> succ) {
  11.         this.element = elem;
  12.         this.succ = succ;
  13.     }
  14.  
  15.     @Override
  16.     public String toString() {
  17.         return element.toString();
  18.     }
  19. }
  20.  
  21. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  22.  
  23.     // Each MapEntry object is a pair consisting of a key (a Comparable
  24.     // object) and a value (an arbitrary object).
  25.     K key;
  26.     E value;
  27.  
  28.     public MapEntry (K key, E val) {
  29.         this.key = key;
  30.         this.value = val;
  31.     }
  32.    
  33.     public int compareTo (K that) {
  34.     // Compare this map entry to that map entry.
  35.         @SuppressWarnings("unchecked")
  36.         MapEntry<K,E> other = (MapEntry<K,E>) that;
  37.         return this.key.compareTo(other.key);
  38.     }
  39.  
  40.     public String toString () {
  41.         return "<" + key + "," + value + ">";
  42.     }
  43. }
  44. class OBHT<K extends Comparable<K>,E> {
  45.  
  46.     // An object of class OBHT is an open-bucket hash table, containing entries
  47.     // of class MapEntry.
  48.     private MapEntry<K,E>[] buckets;
  49.    
  50.     // buckets[b] is null if bucket b has never been occupied.
  51.     // buckets[b] is former if bucket b is formerly-occupied
  52.     // by an entry that has since been deleted (and not yet replaced).
  53.  
  54.     static final int NONE = -1; // ... distinct from any bucket index.
  55.    
  56.     private static final MapEntry former = new MapEntry(null, null);
  57.     // This guarantees that, for any genuine entry e,
  58.     // e.key.equals(former.key) returns false.
  59.    
  60.     private int occupancy = 0;
  61.     // ... number of occupied or formerly-occupied buckets in this OBHT.
  62.    
  63.     @SuppressWarnings("unchecked")
  64.     public OBHT (int m) {
  65.     // Construct an empty OBHT with m buckets.
  66.         buckets = (MapEntry<K,E>[]) new MapEntry[m];
  67.     }
  68.  
  69.  
  70.     private int hash (K key) {
  71.     // Translate key to an index of the array buckets.
  72.         return Math.abs(key.hashCode()) % buckets.length;
  73.     }
  74.  
  75.    
  76.     public int search (K targetKey) {
  77.     // Find which if any bucket of this OBHT is occupied by an entry whose key
  78.     // is equal to targetKey. Return the index of that bucket.
  79.         int b = hash(targetKey); int n_search=0;
  80.         for (;;) {
  81.             MapEntry<K,E> oldEntry = buckets[b];
  82.             if (oldEntry == null)
  83.                 return NONE;
  84.             else if (targetKey.equals(oldEntry.key))
  85.                 return b;
  86.             else
  87.             {
  88.                 b = (b + 1) % buckets.length;
  89.                 n_search++;
  90.                 if(n_search==buckets.length)
  91.                     return NONE;
  92.  
  93.             }
  94.         }
  95.     }
  96.  
  97.  
  98.     public void insert (K key, E val) {
  99.     // Insert the entry <key, val> into this OBHT.
  100.         MapEntry<K,E> newEntry = new MapEntry<K,E>(key, val);
  101.         int b = hash(key); int n_search=0;
  102.         for (;;) {
  103.             MapEntry<K,E> oldEntry = buckets[b];
  104.             if (oldEntry == null) {
  105.                 if (++occupancy == buckets.length) {
  106.                     System.out.println("Hash tabelata e polna!!!");
  107.                 }
  108.                 buckets[b] = newEntry;
  109.                 return;
  110.             }
  111.             else if (oldEntry == former
  112.                     || key.equals(oldEntry.key)) {
  113.                 buckets[b] = newEntry;
  114.                 return;
  115.             }
  116.             else
  117.             {
  118.                 b = (b + 1) % buckets.length;
  119.                 n_search++;
  120.                 if(n_search==buckets.length)
  121.                     return;
  122.  
  123.             }
  124.         }
  125.     }
  126.  
  127.    
  128.     @SuppressWarnings("unchecked")
  129.     public void delete (K key) {
  130.     // Delete the entry (if any) whose key is equal to key from this OBHT.
  131.         int b = hash(key); int n_search=0;
  132.         for (;;) {
  133.             MapEntry<K,E> oldEntry = buckets[b];
  134.            
  135.             if (oldEntry == null)
  136.                 return;
  137.             else if (key.equals(oldEntry.key)) {
  138.                 buckets[b] = former;//(MapEntry<K,E>)former;
  139.                 return;
  140.             }
  141.             else{
  142.                 b = (b + 1) % buckets.length;
  143.                 n_search++;
  144.                 if(n_search==buckets.length)
  145.                     return;
  146.  
  147.             }
  148.         }
  149.     }
  150.  
  151.  
  152.     public String toString () {
  153.         String temp = "";
  154.         for (int i = 0; i < buckets.length; i++) {
  155.             temp += i + ":";
  156.             if (buckets[i] == null)
  157.                 temp += "\n";
  158.             else if (buckets[i] == former)
  159.                 temp += "former\n";
  160.             else
  161.                 temp += buckets[i] + "\n";
  162.         }
  163.         return temp;
  164.     }
  165.  
  166.  
  167.     public OBHT<K,E> clone () {
  168.         OBHT<K,E> copy = new OBHT<K,E>(buckets.length);
  169.         for (int i = 0; i < buckets.length; i++) {
  170.             MapEntry<K,E> e = buckets[i];
  171.             if (e != null && e != former)
  172.                 copy.buckets[i] = new MapEntry<K,E>(e.key, e.value);
  173.             else
  174.                 copy.buckets[i] = e;
  175.         }
  176.         return copy;
  177.     }
  178.     MapEntry get(int i)
  179.     {
  180.         return buckets[i];
  181.     }
  182. }
  183. public class Speluvanje {
  184.  
  185.     public static void main(String[] args) throws  IOException {
  186.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  187.         int N = Integer.parseInt(br.readLine());
  188.         OBHT<String,String> table = new OBHT<>(N*2);
  189.         for(int i=0;i<N;i++){
  190.             String s = br.readLine();
  191.             table.insert(s, s);
  192.         }
  193.         String a = br.readLine();
  194.         String[] as = a.split(" ");
  195.         int brojac = 0;
  196.         for(int i=0;i<as.length;i++){
  197.            
  198.             if(as[i].contains(".")||as[i].contains(",") ||as[i].contains("?")|| as[i].contains("!")){
  199.                 String tmp = as[i].substring(0, as[i].length()-1);
  200.                
  201.                 int f = table.search(tmp.toLowerCase());
  202.                 if(f == OBHT.NONE && as[i].length()!=1){
  203.                     System.out.println(tmp);
  204.                 }else{
  205.                     brojac++;
  206.                 }
  207.             }else{
  208.                 int f = table.search(as[i].toLowerCase());
  209.                 if(f == OBHT.NONE){
  210.                     System.out.println(as[i]);
  211.                 }else{
  212.                     brojac++;
  213.                 }
  214.             }
  215.         }
  216.         if(brojac == as.length)
  217.             System.out.println("Bravo");
  218.     }
  219.  
  220. }
Advertisement
Add Comment
Please, Sign In to add comment