SashkoKlincharov

[Java][АПС] - Помошниците на Дедо Мраз

Jan 23rd, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.45 KB | None | 0 0
  1. Помошниците на Дедо Мраз Задача 1 (0 / 0)
  2. Помошниците на Дедо Мраз направиле компјутерски систем во кој се чуваа список на сите добри деца и нивната желба за подарок за Нова Година,
  3. само што за македонските деца употребиле стара транскрипција на специфичните македонски букви, па така буквата ч ја чуваат како c,
  4. буквата ж како z и ш како s. Но, кога треба да проверат дали некое дете било добро, неговото име го добиваат според новата транскрипција
  5. каде буквата ч се преставува како ch, буквата ж како zh и ш како sh. Помогнете им на помошниците на Дедо Мраз да проверат дали детете било добро ,
  6. и доколку било, кој подарок треба да го добие.
  7.  
  8. Влез: Во првата линија е даден број N на деца кои биле добри. Во наредните N линии се дадени името на детете и поклонот кој го сака.
  9. Во последниот ред е дадено името на детете кое треба да се провери.
  10.  
  11. Излез: Ако даденото дете не било добро (т.е. го нема во списокот на добри деца) да се испечати Nema poklon, а ако било добро да се испечати кој подарок го сакало.
  12.  
  13. Име на класа: DedoMrazPomoshnici
  14.  
  15. Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  16.  
  17. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  18.  
  19. import java.util.Scanner;
  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.  
  45.  
  46. class CBHT<K extends Comparable<K>, E> {
  47.  
  48. // An object of class CBHT is a closed-bucket hash table, containing
  49. // entries of class MapEntry.
  50. private SLLNode<MapEntry<K,E>>[] buckets;
  51.  
  52. @SuppressWarnings("unchecked")
  53. public CBHT(int m) {
  54. // Construct an empty CBHT with m buckets.
  55. buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  56. }
  57.  
  58. private int hash(K key) {
  59. // Translate key to an index of the array buckets.
  60. return Math.abs(key.hashCode()) % buckets.length;
  61. }
  62.  
  63. public SLLNode<MapEntry<K,E>> search(K targetKey) {
  64. // Find which if any node of this CBHT contains an entry whose key is
  65. // equal
  66. // to targetKey. Return a link to that node (or null if there is none).
  67. int b = hash(targetKey);
  68. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  69. if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  70. return curr;
  71. }
  72. return null;
  73. }
  74.  
  75. public void insert(K key, E val) { // Insert the entry <key, val> into this CBHT.
  76. MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  77. int b = hash(key);
  78. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  79. if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  80. // Make newEntry replace the existing entry ...
  81. curr.element = newEntry;
  82. return;
  83. }
  84. }
  85. // Insert newEntry at the front of the 1WLL in bucket b ...
  86. buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  87. }
  88.  
  89. public void delete(K key) {
  90. // Delete the entry (if any) whose key is equal to key from this CBHT.
  91. int b = hash(key);
  92. for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ) {
  93. if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  94. if (pred == null)
  95. buckets[b] = curr.succ;
  96. else
  97. pred.succ = curr.succ;
  98. return;
  99. }
  100. }
  101. }
  102.  
  103. public String toString() {
  104. String temp = "";
  105. for (int i = 0; i < buckets.length; i++) {
  106. temp += i + ":";
  107. for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  108. temp += curr.element.toString() + " ";
  109. }
  110. temp += "\n";
  111. }
  112. return temp;
  113. }
  114.  
  115. }
  116.  
  117.  
  118. class SLLNode<E> {
  119. protected E element;
  120. protected SLLNode<E> succ;
  121.  
  122. public SLLNode(E elem, SLLNode<E> succ) {
  123. this.element = elem;
  124. this.succ = succ;
  125. }
  126.  
  127. @Override
  128. public String toString() {
  129. return element.toString();
  130. }
  131. }
  132.  
  133.  
  134. public class DedoMrazPomosnici {
  135.  
  136. public static void main(String[] args) {
  137. Scanner input = new Scanner(System.in);
  138. int n = input.nextInt();
  139. input.nextLine();
  140.  
  141. CBHT<String,String> hashtable = new CBHT<String,String>(n*2);
  142. for(int i=0;i<n;i++) {
  143. String [] string = input.nextLine().split(" ");
  144. String dobrodete = string[0].toLowerCase();
  145. String podarok = string[1];
  146. hashtable.insert(dobrodete, podarok);
  147. }
  148. while(true) {
  149. String detekoesebara = input.nextLine().toLowerCase();
  150. String string = "";
  151. if(detekoesebara.equals("kraj")) {
  152. break;
  153. }else if(detekoesebara.equals("")) {
  154. continue;
  155. }
  156. if(detekoesebara.contains("ch")) {
  157. char [] charray = detekoesebara.toCharArray();
  158.  
  159. for(int i=0;i<charray.length;i++) {
  160. if(charray[i]=='c'&&charray[i+1]=='h'&&i+1<charray.length) {
  161. string+=(charray[i]);
  162. i++;
  163. continue;
  164. }
  165. else {
  166. string+=(charray[i]);
  167. }
  168. }
  169. detekoesebara = string;
  170. }
  171. string = "";
  172. if(detekoesebara.contains("sh")) {
  173. char [] sharray = detekoesebara.toCharArray();
  174.  
  175. for(int i=0;i<sharray.length;i++) {
  176. if(sharray[i]=='s'&&sharray[i+1]=='h'&&i+1<sharray.length) {
  177. string+=(sharray[i]);
  178. i++;
  179. continue;
  180. }
  181. else {
  182. string+=(sharray[i]);
  183. }
  184. }
  185. detekoesebara = string;
  186.  
  187. }
  188.  
  189. string = "";
  190. if(detekoesebara.contains("zh")) {
  191. char [] zharray = detekoesebara.toCharArray();
  192.  
  193. for(int i=0;i<zharray.length;i++) {
  194. if(zharray[i]=='z'&&zharray[i+1]=='h'&&i+1<zharray.length) {
  195. string+=(zharray[i]);
  196. i++;
  197. continue;
  198. }
  199. else {
  200. string+=(zharray[i]);
  201. }
  202. }
  203. detekoesebara = string;
  204. }
  205. System.out.println(detekoesebara);
  206.  
  207. SLLNode<MapEntry<String,String>> node = hashtable.search(detekoesebara);
  208. if(node==null) {
  209. System.out.println("Nema poklon");
  210. }
  211. else {
  212. System.out.println(node.element.value);
  213. }
  214. }
  215.  
  216. }
  217.  
  218. }
  219.  
  220. Пример влез
  221. 5
  222. JohnDoe dog
  223. JaneDoe cat
  224. TomceZarkovski bike
  225. MartaMartevska sonyplaystation
  226. EstebanPerez brother
  227. TomcheZharkovski
  228. Пример излез
  229. bike
Add Comment
Please, Sign In to add comment