喵哈哈村的代码传说 第三章 宽度优先搜索

题目链接:http://qscoj.cn/problem/37/

要写作业了……

先上代码

#include<bits/stdc++.h>
#define MAXN 10086
using namespace std;
int dx[5]={0,-1,0,0,1};
int dy[5]={0,1,0,-1,0};
int mp[MAXN][MAXN];//标记数组
string s[MAXN];//s是一排,MAXN是列数
int n,m;//地图大小
int xx0,yy0,xx1,yy1;//起点和终点
int check(int x,int y)
{
    if(x<0||x>=n)return false;
    if(y<0||y>=m)return false;//判断越界
    if(mp[x][y]!=-1)return false;// 看一下标记来看是否走过
    if(s[x][y]==‘0‘)return false;//地图上是否为零
    return true;
}//判断这个点可不可以走
void solve()
{
    xx0--,yy0--,xx1--,yy1--;
    for(int i=0;i<n;i++) cin>>s[i];//读入地图
    memset(mp,-1,sizeof(mp));//全部标为 -1表示没有走过
    queue<int> QX,QY;//队列交叉跑
    QX.push(xx0);
    QY.push(yy1);
    mp[xx0][yy1]=0;//对起点的距离为零
    while(!QX.empty())
    {
        int nowx=QX.front();
        int nowy=QY.front();
        QX.pop(),QY.pop();//取出并删除坐标的过程
        for(int i=1;i<=4;i++)
        {
            int nex=nowx+dx[i];
            int ney=nowy+dy[i];//“下一步”要走的坐标
            if(check(nex,ney))//判断这样走是否合法
            {
                mp[nex][ney]=mp[nowx][nowy]+1;//递推
                QX.push(nex);
                QY.push(ney);
            }
        }//枚举每一个可以走的方向
    }//只要队列不为空就一直刷(直到标记数组填满)
}
int main()
{
    while(cin>>n>>m>>xx0>>yy0>>xx1>>yy1)
        solve();
    return 0;
} 

求大佬找错~~~~~

时间: 2024-08-15 15:11:47

喵哈哈村的代码传说 第三章 宽度优先搜索的相关文章

喵哈哈村的代码传说 第四章 并查集

描述 有一个非常大的村子,叫做喵哈哈村,一开始他们都互相不认识,但是渐渐地,他们就会相互来往,所以就会有以下问题的产生: 1 x y,x家与y家成为朋友 2 x y,提问x家和y家是否为朋友,间接成为朋友也算. 输入 本题包含若干组测试数据.第一行两个整数n,m,表示这个村子有n户家庭,一开始他们都不认识.含有m个问题.接下来m行:1 x y2 x y分别表示操作和询问.满足1<=n,m<=100000,注意x 输出 是朋友输出Yes,否则输出N 样例输入1 复制 3 4 2 1 2 2 1

喵哈哈村的代码传说 1——4

链接:http://qscoj.cn/problem/35/ 喵哈哈村的代码传说 第一章 冒泡排序 发布时间: 2017年3月11日 11:35   最后更新: 2017年3月11日 11:36   时间限制: 1000ms   内存限制: 128M 描述 "敢问这位兄台,为何这喵哈哈广场围了这么多人?",一位年轻人模样的人问着旁边的卖报小哥. 卖报小哥一听,噗嗤一下,"这位兄弟,从你这问题来看,你可不是本地人.你可知今儿是什么日子?今天可是一年一度的挑战大会!"

喵哈哈村的代码传说 第一章 冒泡排序

输入 本题包含若干组测试数据.第一行一个n,表示有n个数.第二行n个整数a[i]. 保证 1<=n<=100000,1<=a[i]<=100000 输出 对于每组测试数据,输出从小到大排序后的结果.注意,每一行的末尾都得多加一个空格哦. #include<bits/stdc++.h>using namespace std;int n,a[100000],i;main(){ while(cin>>n) { for(int i=0;i<n;i++) cin

喵哈哈村的木星传说

链接:http://qscoj.cn/problem/72/ 喵哈哈村的木星传说(一) 发布时间: 2017年4月11日 20:01   最后更新: 2017年4月11日 20:01   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村有一个挂在空中的木星爷爷,每天晚上都讲一些故事.而星星同学,作为木星爷爷的听众,为了报答,于是每天晚上都会为他解决一个问题. 今天,星星同学要为木星爷爷解决这样一个问题: 给一个n*n的方阵,请将这个方阵顺时针旋转90°. 输入 本题包含若干组测

第一行代码ANDROID 第三章

1常用控件用法 TestView gravity文字居中 Button text AllCaps默认大写 EditText 最大行数maxLines 1 button.setOnClickListener(new View.OnClickListener() { 2 @Override 3 public void onClick(View view) { 4 5 switch (view.getId()){ 6 case R.id.button: 7 String inputText = edi

qscoj 喵哈哈村的魔法考试 Round #5 (Div.2) 题解(前1,2,3题)ps:前三题在本人水平可掌控范围之内

题目链接:http://qscoj.cn/problem/30/ 第一题 喵哈哈村的狼人杀大战(1) 时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村最近热衷于玩一个叫做狼人杀的游戏! 张小田今天她抽到的是民的身份,按照她的一贯玩法,她不会考虑发言者的发言,她只考虑站队情况. 现在是警上竞选的投票环节,现在只剩下还能当警长的两个真假预言家. 张小田认为,如果在某一天,有连续坐在一起的k个人投票给同一个人的话,那么她就认为这一局可能比较危险. 投给第一个预言家的,就记为0,投给第

10喵哈哈村的魔法石

题目传送: 描述 传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有A的能量:第二种魔法石叫做地冈石,拥有B的能量:而第三种,则是最神奇的天玄石,拥有无可比拟的C的能量! 但是有一天,沈宝宝太调皮了,把一颗天玄石玩丢了-- "这可玩大发了,这样我会被天行廖责备的."沈宝宝悲伤的说到,"怎么办呢?" 这时候沈宝宝望了望窗外的飞过的白鸽,突然急中生智,想到了一个办法:干脆就用人铁石和地冈石把天玄石凑出来吧! "只要我拿若干个人铁石,若干个地冈石,他们

qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)

喵哈哈村的魔法源泉(2) 发布时间: 2017年5月9日 20:59   最后更新: 2017年5月9日 21:00   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村有一个魔法源泉,里面有无穷无尽的力量. 但是前提是你能答出这样一个问题: 给你a,b,p,让你输出a*b%p的值. 输入 本题包含若干组测试数据.第一行三个整数a,b,p. 满足:0<=a,b,p<=1e18 输出 输出答案 样例输入1 复制 10 1 7 样例输出1 3题目链接:http://qscoj.c

喵哈哈村的种花魔法(线段树的区间更新)

描述 喵哈哈村有一个谷歌廖,谷歌廖特别喜欢种花. 而且谷歌廖最神奇的就是,他会施展一种种花魔法,会使得一定区间的花儿,长高k厘米. 在谷歌廖施展若干次魔法之后,好奇的沈宝宝想知道,每朵花儿的高度是多少. 输入 第一行两个整数n,m,分别表示花儿的数量,和谷歌廖施展种花魔法的次数.第二行n个整数a[i],表示花儿一开始的高度为a[i]厘米.接下来m行,每行三个整数l,r,k.表示谷歌廖使得区间[l,r]的花儿长高了k厘米. 1<=n,m<=1000001<=a[i],k<=10000