Problem: 1654. 到家的最少跳跃次数-Minimum Jumps to Reach Home内存100%耗时93%广度优先搜索记忆化哈希表状态数组status标记不能跳到的坐标forbidden哈希表mem标记已经跳过的坐标{tmp}和当前状态向前0还是向后1mem[tmp][0]true表示向前跳到了x下一次可以向后跳mem[tmp][1]true表示向后跳到了x下一次只能向前跳mem防止了重复搜索Codeclass Solution { public: bool status[100000], mem[100000][2], sub; int minimumJumps(vectorint forbidden, int a, int b, int x) { if(x0) return 0; memset(status, 0, sizeof(status)); memset(mem, 0, sizeof(mem)); for(int i : forbidden) status[i] true; queuepairint, bool qe; qe.push({0, false}); int now, tmp, sz, steps 0; status[0] true; mem[0][0] true; while(!qe.empty()) { sz qe.size(); steps; for(int i 0; i sz; i) { now qe.front().first; sub qe.front().second; qe.pop(); tmp now a; if(status[tmp] false mem[tmp][0]false tmp - x b*6) { if(tmp x) return steps; qe.push({tmp, false}); mem[tmp][0] true; } tmp now - b; if(sub false tmp 0 mem[tmp][1]false status[tmp] false) { if(tmp x) return steps; qe.push({tmp, true}); mem[tmp][1] true; } } } return -1; } };