fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static float calcScore(int keyID, Map<Integer, Integer> frequencies, Map<Integer, Integer> subTax) {
  11. float res = 0f;
  12. int nodes = 0;
  13. if (frequencies.containsKey(keyID)) {
  14. System.out.println(keyID + "->" + frequencies.get(keyID));
  15. return frequencies.get(keyID) + 0f;
  16. }
  17.  
  18. for (Map.Entry<Integer, Integer> entry : subTax.entrySet()) {
  19. if (entry.getValue() == keyID) {
  20. nodes++;
  21. res += calcScore(entry.getKey(), frequencies, subTax);
  22. }
  23. }
  24. return 1 / nodes * res;
  25. }
  26.  
  27. public static void main(String[] args) {
  28.  
  29. Map<Integer, Integer> subTaxonomy = new HashMap<>();
  30. subTaxonomy.put(1, 0);
  31. subTaxonomy.put(2, 1);
  32. subTaxonomy.put(3, 1);
  33. subTaxonomy.put(4, 2);
  34. subTaxonomy.put(17, 3);
  35. subTaxonomy.put(11, 4);
  36. subTaxonomy.put(13, 4);
  37.  
  38. Map<Integer, Integer> frequencies = new HashMap<>();
  39. frequencies.put(11, 3);
  40. frequencies.put(13, 5);
  41. frequencies.put(17, 9);
  42.  
  43. System.out.println(calcScore(1, frequencies, subTaxonomy));
  44.  
  45. }
  46. }
Success #stdin #stdout 0.03s 4386816KB
stdin
Standard input is empty
stdout
11->3
13->5
17->9
0.0