摘要:机器人搬重物传送门这道题本来没啥好说的,但细节实在比较多,被坑了好多次。
这道题本来没啥好说的,但细节实在比较多,被坑了好多次。
#include #define MAX 55using namespace std;int mod(int x){ return (x+4)%4;}struct pt{ int x, y, dir, step; pt(){} pt(int a, int b, int c, int d):x(a), y(b), dir(c), step(d){}};const int movx[] = {0,1,0,-1}, movy[] = {1,0,-1,0};int a[MAX][MAX];bool vis[MAX][MAX][5];int n, m;pt st, ed;void bfs(){ queue q; bool flag = false; st.step = 0; q.push(st); vis[st.x][st.y][st.dir] = true; while(!q.empty()){ pt t = q.front(); q.pop(); if(t.x == ed.x && t.y == ed.y){ cout << t.step << endl; flag = true; break; } for(int i = 1; i <= 3; i++){ int u, v; u = t.x + i*movx[t.dir]; v = t.y + i*movy[t.dir]; if(u<=0 || u>=n || v<=0 || v>=m || a[u][v] == 1){ break; } if(vis[u][v][t.dir]){ continue; } vis[u][v][t.dir] = true; q.push(pt(u, v, t.dir, t.step+1)); } if(!vis[t.x][t.y][mod(t.dir+1)]){ vis[t.x][t.y][mod(t.dir+1)] = true; q.push(pt(t.x, t.y, mod(t.dir+1), t.step+1)); } if(!vis[t.x][t.y][mod(t.dir-1)]){ vis[t.x][t.y][mod(t.dir-1)] = true; q.push(pt(t.x, t.y, mod(t.dir-1), t.step+1)); } } if(!flag){ cout << -1 << endl; }}int main(){ cin >> n >> m; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ scanf("%d", &a[i][j]); if(a[i][j] == 1){ a[i-1][j-1] = a[i-1][j] = a[i][j-1] = 1; } } } cin >> st.x >> st.y >> ed.x >> ed.y; char c; cin >> c; switch(c){ case "E": st.dir = 0; break; case "S": st.dir = 1; break; case "W": st.dir = 2; break; case "N": st.dir = 3; break; } bfs(); return 0;}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/118867.html
摘要:后来知道有了院赛,学长说刷院和杭电就可,我就一直刷院,到最后比赛前院的前五十道基本做完,杭电也弄了十来道,就这样草草参加比赛了。 博客主页: https://b...
摘要:转载史上最简单的平衡树无旋作者博客地址使用此文件时请保留上述信息谢谢合作觉得文章不错请点击链接为博客点赞高能预警所有示例代码都是数组版的欢迎前置知识线段树请确保你完全理解最基础的线段树和区间加法和区间求和一简介无旋又称是范浩强大佬发明的一种 【转载】史上最简单的平衡树——无旋Treap showImg(https://segmentfault.com/img/bVbuWGu?w=60...
摘要:转载史上最简单的平衡树无旋作者博客地址使用此文件时请保留上述信息谢谢合作觉得文章不错请点击链接为博客点赞高能预警所有示例代码都是数组版的欢迎前置知识线段树请确保你完全理解最基础的线段树和区间加法和区间求和一简介无旋又称是范浩强大佬发明的一种 【转载】史上最简单的平衡树——无旋Treap showImg(https://segmentfault.com/img/bVbuWGu?w=60...
摘要:转载史上最简单的平衡树无旋作者博客地址使用此文件时请保留上述信息谢谢合作觉得文章不错请点击链接为博客点赞高能预警所有示例代码都是数组版的欢迎前置知识线段树请确保你完全理解最基础的线段树和区间加法和区间求和一简介无旋又称是范浩强大佬发明的一种 【转载】史上最简单的平衡树——无旋Treap showImg(https://segmentfault.com/img/bVbuWGu?w=60...
阅读 1495·2021-11-11 10:59
阅读 2465·2021-09-04 16:40
阅读 3517·2021-09-04 16:40
阅读 1779·2021-09-02 15:40
阅读 2774·2021-07-30 15:30
阅读 1356·2021-07-26 22:03
阅读 3071·2019-08-30 13:20
阅读 2101·2019-08-29 18:31