2026/5/21 19:58:24
网站建设
项目流程
北京网站的建立的,织梦网站 伪静态,用 htmi5做网站,视频制作公司排行Problem: 752. Open the Lock 打开转盘锁 解题过程 队列#xff0c;两种可能的#xff0c;某个字符1取模或者-110取模#xff0c;共4个字符#xff0c;所以共4*2种可能#xff0c;而且0000到9999共10000种可能#xff0c;所以集合不大的#xff0c;可以用广度优先搜索两种可能的某个字符1取模或者-110取模共4个字符所以共4*2种可能而且0000到9999共10000种可能所以集合不大的可以用广度优先搜索然后判断是否已经遍历过若是没有则放入队列队列每次pop一个就将这个字符串放入已经遍历过的集合中防止重复的Codeclass Solution { public: int openLock(vectorstring deadends, string target) { if(target0000) return 0; queuepairstring, int qe; qe.push({0000, 0}); unordered_setstring dead; for(string s : deadends) { dead.insert(s); } if(dead.find(0000)!dead.end()) return -1; pairstring, int pr; string str, tmp; char a,b,c,d; int a1, b1,c1,d1, len; while(!qe.empty()) { int sz qe.size(); for(int i 0; i sz; i) { pr qe.front(); str pr.first; len pr.second; qe.pop(); dead.insert(str); a1 str[0]-0; b1 str[1]-0; c1 str[2]-0; d1 str[3]-0; a (a11)%10 0; tmp.clear(); tmp a; tmp str[1]; tmp str[2]; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } a (a1-110)%10 0; tmp.clear(); tmp a; tmp str[1]; tmp str[2]; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } b (b11)%10 0; tmp.clear(); tmp str[0]; tmp b; tmp str[2]; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } b (b1-110)%10 0; tmp.clear(); tmp str[0]; tmp b; tmp str[2]; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } c (c11)%10 0; tmp.clear(); tmp str[0]; tmp str[1]; tmp c; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } c (c1-110)%10 0; tmp.clear(); tmp str[0]; tmp str[1]; tmp c; tmp str[3]; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } d (d11)%10 0; tmp.clear(); tmp str[0]; tmp str[1]; tmp str[2]; tmp d; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } d (d1-110)%10 0; tmp.clear(); tmp str[0]; tmp str[1]; tmp str[2]; tmp d; if(dead.find(tmp)dead.end()) { if(tmptarget) return len 1; dead.insert(tmp); qe.push({tmp, len 1}); } } } return -1; } };