Maze(BFS处理)


题目再现

题目内容:
给你一个迷宫,
S为起点,E为终点。
请你找出走出迷宫所需要花费的最短步数。
你只能往上下左右四个方向移动。

输入格式:
第一行有一个数字T,代表有T组测资。
每组测资的第一行有两个数字R、C,
代表迷宫的大小(R x C)。
接下来R行,每行有C个字元来描述迷宫,
'.'代表可以行走的路,
'X'代表不可行走的墙壁,
'S'代表起点,
'E'代表终点。
测资范围:
T < 100
2 < R,C <= 30

输出格式:
对于每组测资,计算由起点到达终点的最少步数。
测资保证一定存在至少一条由起点通往终点的路径。
将每组测资的步数加总后再输出。

输入样例:
2
5 5
SXXXX
...XX
.X...
..XXX
....E
6 6
......
.S..X.
XXX...
....X.
.X..XX
.EX...

输出样例:
18

时间限制:500ms内存限制:32000kb

算法实现

此题很简单,直接BFS进行处理即可。

#include <stdio.h>
#include <string.h>

struct Node{
    int x, y;
    int step;
};

int main(){
    long long sum = 0;
    struct Node arrQue[901];
    int book[30][30];
    int T, R, C, tail, head;
    int i, j, startX, startY, endX, endY, tX, tY, flag;
    char ch;
    char arrMap[31][31];
    int next[4][2] = {
        {-1, 0},//上
        {0, 1},//右
        {1, 0},//下
        {0, -1}//左 
    };

    scanf("%d", &T);
    while(T --){
        startX = startY = endX = endY = -1;

        scanf("%d %d", &R, &C);

        //读入地图 
        for(i = 0; i < R; i ++){
            scanf("%s", arrMap[i]);

            if(startX == -1){
                for(j = 0; j < C; j ++){
                    if(arrMap[i][j] == 'S'){
                        startX = i;
                        startY = j;
                    }
                }
            }
            if(endX == -1){
                for(j = 0; j < C; j ++){
                    if(arrMap[i][j] == 'E'){
                        endX = i;
                        endY = j;
                    }
                }
            }
        }

        tail = head = 0;
        flag = 0;
        for(i = 0; i < R; i ++){
            memset(book[i], 0, sizeof(book[i]));
        }

        arrQue[tail].step = 0;
        arrQue[tail].x = startX;
        arrQue[tail].y = startY;
        book[startX][startY] = 1;
        tail ++;

        while(head < tail){
            for(i = 0; i < 4; i ++){
                tX = arrQue[head].x + next[i][0];
                tY = arrQue[head].y + next[i][1];

                if(tX < 0 || tY < 0 || tX >= R || tY >= C){
                    continue;
                }

                if((arrMap[tX][tY] == '.' || arrMap[tX][tY] == 'E') && book[tX][tY] == 0){
                    arrQue[tail].x = tX;
                    arrQue[tail].y = tY;
                    arrQue[tail].step = arrQue[head].step + 1;
                    book[tX][tY] = 1;

                    if(tX == endX && tY == endY){
                        flag = 1;
                        sum += arrQue[tail].step;
                        break;
                    }

                    tail ++;
                }


            }

            head ++;

            if(flag == 1){
                break;
            }
        }

    }

    printf("%lld", sum);

    return 0;
}

博客名称:王乐平博客

博客地址:http://blog.lepingde.com

优快云博客地址:http://blog.youkuaiyun.com/lecepin


这里写图片描述

Amaze UI 开发思路通过拆分、封装一些常用的网页组件,以规范化采用云适配平台开发的移动网站,统一用户体验逐渐形成的。1、语义化 Amaze UI开发遵循语义化原则,意图通过类名(class)等信息直观传达元素的功能角色,同时关注结构、样式、行为分离,降低各部分的耦合程度,提高开发效率和可维护性。2、移动优先,跨屏适配 遵循 “移动优先(Mobile First)”、“渐进增强(Progressive enhancement)”的理念,可先从移动设备开始开发网站,逐步在扩展的更大屏幕的设备上,专注于最重要的内容和交互,适应移动互联潮流。轻松创建跨屏适配的网页。3、模块化,按需定制 AMUI使用LESS编写样式,结构良好,易扩展,易维护;使用Seajs模块化开发、组织 JavaScript,自然、优雅。4、专注于HTML5AMUI 基于轻量的Zepto.js开发,有效减少为兼容旧浏览器的臃肿代码;基于 CSS3 的交互效果,平滑、高效。AMUI专注于现代浏览器(支持HTML5),不再为过时的浏览器耗费资源,为更有价值的用户提高更好的体验。5、本地化支持相比国外的前端框架,Amaze UI专注解决中文排版优化问题,根据操作系统调整字体,实现最佳中文排版效果;针对国内主流浏览器及App内置浏览器提供更好的兼容性支持,为你节省大量兼容性调试时间。Amaze UI 的开发历程云适配创始人陈本峰:这个项目最开始是作为内部使用工具来开发的。我们云适配本身就是一个前端产品,Amaze UI能帮我们降低开发时间和成本,用标准化作业流程,能有更高的产出。从云适配创立之初,我们就开始积累自己的前端框架,同时也借鉴了Bootstrap等国外框架的优点。在内部使用过程中,大家一致反映不错,我们就希望把这个产品开源,希望分享给更多的人,也希望更多的人来贡献代码,来共建中国前端开源生态环境。在最近几个月,我们投入人力将这个项目整理成一个开源产品。目前有2个软件工程师全职在开发这个产品,还有一个设计,一个PM也在尽力配合。产品发布之后,我们会投入更多全职的工程师来专心打磨这个产品,同时也呼吁更多的前端开发爱好者共同来完善这个框架。Amaze UI的目标帮助开发者提高开发效率,提升网页效果,即用最短的时间做出最赞的网页,使更多的前端开发者不再受前端复杂代码困扰。下面是特性硬广Amaze UI 是中国首个开源 HTML5 跨屏前端框架,基于 React.js 开发的 Web 组件库。Amaze UI 是一个轻量级、Mobile first的前端框架, 基于开源社区流行前端框架编写。为移动而生Amaze UI 采用业内先进的 mobile first 理念,从小屏逐步扩展到大屏,最终实现所有屏幕适配,适应移动互联潮流。组件丰富,模块化Amaze UI 含近 20 个 CSS 组件、10 个 JS 组件,更有 17 款包含近 60 个主题的 Widgets,可快速构建界面出色、体验优秀的跨屏页面,大幅度提升你的开发效率。本地化支持相比国外的前端框架,Amaze UI 专注解决中文排版优化问题,根据操作系统调整字体,实现最佳中文排版效果;针对国内主流浏览器及 App 内置浏览器提供更好的兼容性支持,为你节省大量兼容性调试时间。轻量级,高性能Amaze UI 非常注重性能,基于轻量的 Zepto.js 开发,并使用 CSS3 来做动画交互,平滑、高效,更适合移动设备,让你的 Web 应用可以高速载入。 标签:Amaze
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王乐平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值