首页 > 其他 > 详细

第一次的迷宫为队列版,这个为搜索版x(自己写的嘿嘿)

时间:2017-04-07 21:53:22      阅读:230      评论:0      收藏:0      [点我收藏+]

错误原因:第一次提交的时候把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(自己写的嘿嘿)

原文:http://www.cnblogs.com/zxqxwnngztxx/p/6679840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!