Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void start () {
- List<listEntry> closedEntries = new LinkedList<listEntry>();
- dfs(0, closedEntries, 33);
- }
- void dfs (int node, List<listEntry> closedEntries, int gemstones){
- List<listEntry> entries = _graph.getEdges(node);
- for (listEntry entry:entries) {
- boolean isInList = false;
- for (listEntry listEntry:closedEntries) {
- if (isInList(node, entry,closedEntries)) {
- isInList = true;
- }
- }
- if (!isInList) {
- int result = doOperation(gemstones,entry);
- if (result >= 0) {
- closedEntries.add(entry);
- if (entry._node == 11) {
- if (result < _Klotmilde) {
- _Klotmilde = result;
- int[] tempo = new int[closedEntries.size()];
- int i = 0;
- for(listEntry listEntry:closedEntries) {
- tempo[i] = listEntry._node;
- i++;
- }
- _KlotmildePath = tempo;
- }
- if (result > _Klotwilde) {
- int[] tempo = new int[closedEntries.size()];
- int i = 0;
- for(listEntry listEntry:closedEntries) {
- tempo[i] = listEntry._node;
- i++;
- }
- _KlotwildePath = tempo;
- _Klotwilde = result;
- }
- if (result == 999) {
- int[] tempo = new int[closedEntries.size()];
- int i = 0;
- for(listEntry listEntry:closedEntries) {
- tempo[i] = listEntry._node;
- i++;
- }
- _KlothildePath = tempo;
- _Klothilde = 999;
- }
- }
- dfs(entry._node, closedEntries, result);
- closedEntries.remove(entry);
- }
- }
- }
- }
- int doOperation(int gemstones, listEntry entry) {
- switch (entry._operand) {
- case "+":
- return gemstones + entry._weight;
- case "-":
- return gemstones - entry._weight;
- case "/":
- if (gemstones % entry._weight == 0) {
- return gemstones / entry._weight;
- } else {
- return -1;
- }
- case "*":
- return gemstones * entry._weight;
- }
- return -1;
- }
- boolean isInList(int node, listEntry entry, List<listEntry> closedEntries) {
- boolean isInList = false;
- for (listEntry edge:closedEntries) {
- if (edge._operand.equals(entry._operand) && edge._weight == entry._weight &&
- (edge._node == entry._node || edge._node == node)) {// *3 exists twice, therefore I also check if
- isInList = true; // the start or endnode is the same as my edgenode
- }
- }
- return isInList;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement