SashkoKlincharov

[Java][АПС] - Статистика

Feb 6th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  4.  
  5. // Each MapEntry object is a pair consisting of a key (a Comparable
  6. // object) and a value (an arbitrary object).
  7. K key;
  8. E value;
  9.  
  10. public MapEntry (K key, E val) {
  11. this.key = key;
  12. this.value = val;
  13. }
  14.  
  15. public int compareTo (K that) {
  16. // Compare this map entry to that map entry.
  17. @SuppressWarnings("unchecked")
  18. MapEntry<K,E> other = (MapEntry<K,E>) that;
  19. return this.key.compareTo(other.key);
  20. }
  21.  
  22. public String toString () {
  23. return "<" + key + "," + value + ">";
  24. }
  25. }
  26.  
  27. class SLLNode<E> {
  28. protected E element;
  29. protected SLLNode<E> succ;
  30.  
  31. public SLLNode(E elem, SLLNode<E> succ) {
  32. this.element = elem;
  33. this.succ = succ;
  34. }
  35.  
  36. @Override
  37. public String toString() {
  38. return element.toString();
  39. }
  40. }
  41. class CBHT<K extends Comparable<K>, E> {
  42.  
  43. // An object of class CBHT is a closed-bucket hash table, containing
  44. // entries of class MapEntry.
  45. private SLLNode<MapEntry<K,E>>[] buckets;
  46.  
  47. @SuppressWarnings("unchecked")
  48. public CBHT(int m) {
  49. // Construct an empty CBHT with m buckets.
  50. buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  51. }
  52.  
  53. private int hash(K key) {
  54. // Translate key to an index of the array buckets.
  55. return Math.abs(key.hashCode()) % buckets.length;
  56. }
  57.  
  58. public SLLNode<MapEntry<K,E>> search(K targetKey) {
  59. // Find which if any node of this CBHT contains an entry whose key is
  60. // equal
  61. // to targetKey. Return a link to that node (or null if there is none).
  62. int b = hash(targetKey);
  63. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  64. if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  65. return curr;
  66. }
  67. return null;
  68. }
  69.  
  70. public void insert(K key, E val) { // Insert the entry <key, val> into this CBHT.
  71. MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  72. int b = hash(key);
  73. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  74. if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  75. // Make newEntry replace the existing entry ...
  76. curr.element = newEntry;
  77. return;
  78. }
  79. }
  80. // Insert newEntry at the front of the 1WLL in bucket b ...
  81. buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  82. }
  83.  
  84. public void delete(K key) {
  85. // Delete the entry (if any) whose key is equal to key from this CBHT.
  86. int b = hash(key);
  87. for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ) {
  88. if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  89. if (pred == null)
  90. buckets[b] = curr.succ;
  91. else
  92. pred.succ = curr.succ;
  93. return;
  94. }
  95. }
  96. }
  97.  
  98. public String toString() {
  99. String temp = "";
  100. for (int i = 0; i < buckets.length; i++) {
  101. temp += i + ":";
  102. for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  103. temp += curr.element.toString() + " ";
  104. }
  105. temp += "\n";
  106. }
  107. return temp;
  108. }
  109.  
  110. public static String najpopularenSport(CBHT<String, Class> hashtable) {
  111. int maxPojavuvanja = 0;
  112. String maxSport = "";
  113. for(int i=0;i<hashtable.buckets.length;i++) {
  114. // int c = 0;
  115. for(SLLNode<MapEntry<String,Class>> curr = hashtable.buckets[i];curr!=null;curr = curr.succ) {
  116. // System.out.println(curr.element.key + " " + curr.element.value.brpojavuvanja + " " + curr.element.value.name);
  117. curr.element.key = curr.element.key.trim();
  118. if(curr.element.value.brpojavuvanja>maxPojavuvanja) {
  119. maxSport = "";
  120. maxSport+=curr.element.key + " ";
  121. maxPojavuvanja = curr.element.value.brpojavuvanja;
  122. }
  123. else if(curr.element.value.brpojavuvanja==maxPojavuvanja) {
  124. maxSport+=curr.element.key + " ";
  125. }
  126. }
  127. }
  128. // System.out.println(maxSport);
  129.  
  130. String [] array = maxSport.split(" ");
  131. for(int i=0;i<array.length;i++) {
  132. for(int j=i+1;j<array.length;j++) {
  133. if(array[i].length()>array[j].length()) {
  134. String help = array[i];
  135. array[i] = array[j];
  136. array[j] = help;
  137. }
  138. else if(array[i].length()==array[j].length()) {
  139. if(array[j].compareTo(array[i])>0) {
  140. String help = array[i];
  141. array[i] = array[j];
  142. array[j] = help;
  143. }
  144. }
  145. }
  146. }
  147. maxSport = array[0];
  148. return maxSport.trim();
  149. }
  150. public static int kolkuFudbal(CBHT<String,Class> hashtable) {
  151. int c = 0;
  152. for(int i=0;i<hashtable.buckets.length;i++) {
  153. for(SLLNode<MapEntry<String,Class>> curr = hashtable.buckets[i];curr!=null;curr = curr.succ) {
  154. // System.out.println(curr.e//lement.key + " " + curr.element.value.name);
  155. curr.element.key = curr.element.key.trim();
  156. if(curr.element.key.equals("Fudbal")) {
  157. c++;
  158.  
  159. }
  160.  
  161. }
  162. }
  163. return c;
  164. }
  165.  
  166. }
  167.  
  168. class Class{
  169. String name;
  170. String sport;
  171. int brpojavuvanja;
  172.  
  173. public Class(String name,String sport,int brpojavuvanja) {
  174. this.name = name;
  175. this.sport = sport;
  176. this.brpojavuvanja = brpojavuvanja;
  177. }
  178. }
  179.  
  180. public class Statistics {
  181.  
  182. public static void main(String[] args) {
  183. Scanner input = new Scanner(System.in);
  184. int n = input.nextInt();
  185. input.nextLine();
  186.  
  187. CBHT<String,Class> hashtable = new CBHT<String,Class>(n*2);
  188. for(int i=0;i<n;i++) {
  189. String [] read = input.nextLine().split(" ");
  190. String name = read[0];
  191. String sport = read[1];
  192. int brpojavuvanja = 1;
  193. SLLNode<MapEntry<String,Class>> node = hashtable.search(sport);
  194. if(node==null) {
  195. Class klasa = new Class(name,sport,brpojavuvanja);
  196. hashtable.insert(sport,klasa);
  197. }
  198. else {
  199. brpojavuvanja++;
  200. Class klasa = new Class(name,sport,brpojavuvanja);
  201. hashtable.insert(sport+" ", klasa);
  202. }
  203. }
  204.  
  205. System.out.println("Najpopularen sport: " + CBHT.najpopularenSport(hashtable));
  206. System.out.println("Fudbal sakaat: " + CBHT.kolkuFudbal(hashtable));
  207. // System.out.println(hashtable.toString());
  208. }
  209.  
  210. }
Add Comment
Please, Sign In to add comment