Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1.  
  2. void start () {
  3. List<listEntry> closedEntries = new LinkedList<listEntry>();
  4. dfs(0, closedEntries, 33);
  5. }
  6.  
  7. void dfs (int node, List<listEntry> closedEntries, int gemstones){
  8. List<listEntry> entries = _graph.getEdges(node);
  9. for (listEntry entry:entries) {
  10. boolean isInList = false;
  11. for (listEntry listEntry:closedEntries) {
  12. if (isInList(node, entry,closedEntries)) {
  13. isInList = true;
  14. }
  15. }
  16. if (!isInList) {
  17. int result = doOperation(gemstones,entry);
  18. if (result >= 0) {
  19. closedEntries.add(entry);
  20. if (entry._node == 11) {
  21. if (result < _Klotmilde) {
  22. _Klotmilde = result;
  23. int[] tempo = new int[closedEntries.size()];
  24. int i = 0;
  25. for(listEntry listEntry:closedEntries) {
  26. tempo[i] = listEntry._node;
  27. i++;
  28. }
  29. _KlotmildePath = tempo;
  30. }
  31. if (result > _Klotwilde) {
  32. int[] tempo = new int[closedEntries.size()];
  33. int i = 0;
  34. for(listEntry listEntry:closedEntries) {
  35. tempo[i] = listEntry._node;
  36. i++;
  37. }
  38. _KlotwildePath = tempo;
  39. _Klotwilde = result;
  40. }
  41. if (result == 999) {
  42. int[] tempo = new int[closedEntries.size()];
  43. int i = 0;
  44. for(listEntry listEntry:closedEntries) {
  45. tempo[i] = listEntry._node;
  46. i++;
  47. }
  48. _KlothildePath = tempo;
  49. _Klothilde = 999;
  50. }
  51. }
  52. dfs(entry._node, closedEntries, result);
  53. closedEntries.remove(entry);
  54. }
  55. }
  56. }
  57. }
  58.  
  59.  
  60.  
  61.  
  62.  
  63. int doOperation(int gemstones, listEntry entry) {
  64. switch (entry._operand) {
  65. case "+":
  66. return gemstones + entry._weight;
  67. case "-":
  68. return gemstones - entry._weight;
  69. case "/":
  70. if (gemstones % entry._weight == 0) {
  71. return gemstones / entry._weight;
  72. } else {
  73. return -1;
  74. }
  75. case "*":
  76. return gemstones * entry._weight;
  77. }
  78. return -1;
  79. }
  80.  
  81.  
  82. boolean isInList(int node, listEntry entry, List<listEntry> closedEntries) {
  83. boolean isInList = false;
  84. for (listEntry edge:closedEntries) {
  85. if (edge._operand.equals(entry._operand) && edge._weight == entry._weight &&
  86. (edge._node == entry._node || edge._node == node)) {// *3 exists twice, therefore I also check if
  87. isInList = true; // the start or endnode is the same as my edgenode
  88. }
  89. }
  90. return isInList;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement