第一次的迷宫为队列版,这个为搜索版x(自己写的嘿嘿)
Posted 云深不知处
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一次的迷宫为队列版,这个为搜索版x(自己写的嘿嘿)相关的知识,希望对你有一定的参考价值。
错误原因:第一次提交的时候把Yes跟No输错了都输为大写:……
代码来啦!
#include<cstdio> #include<iostream> using namespace std; int m,n,tot; int jz[2020][2020]; bool j[2020][2020];//初始为0 void ym(int x,int y) { j[x][y]=1; if(!j[x+1][y]&&jz[x+1][y]<=jz[x][y]&&x+1<=n) { ym(x+1,y); tot--; } if(!j[x][y+1]&&jz[x][y+1]<=jz[x][y]&&y+1<=m) { ym(x,y+1); tot--; } if(!j[x-1][y]&&jz[x-1][y]<=jz[x][y]&&x-1>0) { ym(x-1,y); tot--; } if(!j[x][y-1]&&jz[x][y-1]<=jz[x][y]&&y-1>0) { ym(x,y-1); tot--; } } void mm(int x1,int y1) { if(j[x1][y1]) printf("Yes\n"); else printf("No\n"); } int main() { scanf("%d%d",&n,&m); tot=n*m-1; for(int i=1; i<=n; ++i) { for(int j=1; j<=m; ++j) { scanf("%d",&jz[i][j]); } } int sx,sy; scanf("%d%d",&sx,&sy); j[sx][sy]=1;//进行标记,已经被淹没 ym(sx,sy); printf("%d\n",tot); int q,xw,yw; scanf("%d",&q); for(int k=1; k<=q; ++k) { scanf("%d%d",&xw,&yw); mm(xw,yw); } return 0; }
以上是关于第一次的迷宫为队列版,这个为搜索版x(自己写的嘿嘿)的主要内容,如果未能解决你的问题,请参考以下文章
[Algorithm]Java 版递归算法解迷宫问题哈诺塔问题八皇后问题
C语言之迷宫小游戏2.0版(随机生成地图,可变颜色,优化游戏体验)