The problem is very classical, first is how do we come up with a BFS? Next time since we meet a minimum step or other minimum problem, we can think of such algorithm. In this case, we will think of since we need to first go to a point, then go to another specify point, we can convert it to several BFS together. I think if I do more, I can improve of that.
Error:
1. Always remember check the next step/situation is used or not!!!
2. Use sort instead of priority_queue to sort the array, such stupid I am!!!
3. The process of BFS are:
-
1): initialize the situation, which is insert start position to queue
-
2): Get current situation of queue, check every situation(normally 4
directions) is ok or not(remember check if current position is used
or not!!!) -
3): If it is okay, then set next step as used, it is very
important, since in other situation when you pop another element,
it must has the same situation as before, it is use for delete the
duplicate situation.