零基础掌控键盘记录工具:开源项目使用教程

核心内容摘要

ESP-NOW双设备通信实战:ESP32与ESP32-C3异构组网
【毕业设计】SpringBoot+Vue+MySQL 大学生就业服务平台平台源码+数据库+论文+部署文档

保姆级教程!从0到1构建生产级AI代理:RAG+FastAPI让大模型yyds,小白也能秒变高手!

【双端队列bfs】笔记而已推荐好文推荐视频双端队列bfs是解决

bfs最常用的一种手段

bfs就是边值只有0或1两种情况时用的bfs一般是求起点到终点所用边值总值最小为多少用例题更好说明

拖拉机这里在通过没有干草块的位置时所用边值为零通过有干草块位置时边值为1要求需要移除最少的数量那么一定是能不移就不移最好实在需要移再移换句话说就是优先走没有干草块的位置当走完没有干草块的位置时再走有干草块的位置此时可以用双端队列deque来实现将没有干草块的压入队头有干草块的压入队尾每次只用队头元素就能实现先走边值为0再走边值为1不同于朴素bfs

bfs不需要判重数组一个点可能多次经过但是只有在值更小时才需要更新代码#includebits/stdc.h//#define int long longusingnamespacestd;boolg[1015][1015];intdx[]{1,-1,0,0};intdy[]{0,0,1,-1};intdis[1015][1015];structnode{intx,y;};dequenodedq;intn,x,y;voidbfs(intx,inty){dq.push_front((node){x,y});while(dq.size()){intaxdq.front().x,aydq.front().y;dq.pop_front();for(inti0;i4;i){intsxaxdx[i],syaydy[i];if(sx0sx1010sy0sy

{if(dis[sx][sy]dis[ax][ay]g[sx][sy])continue;//只有值更小时才需要更新if(!g[sx][sy])dq.push_front((node){sx,sy}),dis[sx][sy]dis[ax][ay];if(g[sx][sy])dq.push_back((node){sx,sy}),dis[sx][sy]dis[ax][ay]1;if(!sx!sy)return;}}}}voidsolve(){cinnxy;while(n--){inta,b;cinab;g[a][b]1;}memset(dis,1e6,sizeof(dis));dis[x][y]0;bfs(x,y);coutdis[0][0]endl;}signedmain(){intt1;//cint;while(t--){solve();}return0;}

生或死三部曲3d动漫-生或死三部曲3d动漫应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123