1647: 穿越雷区

题目描述

X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。

某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?

已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。

例如:

A + - + -

- + - - +

- + + + -

+ - + - +

B + - + -

坦克车只能水平或垂直方向上移动到相邻的区。

输入

输入第一行是一个整数n,表示方阵的大小, 4<=n<100

接下来是n行,每行有n个数据,可能是A,B,+,-中的某一个,中间用空格分开。

A,B都只出现一次。

输出

要求输出一个整数,表示坦克从A区到B区的最少移动步数。

如果没有方案,则输出-1

样例输入

5
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -

样例输出

10

提示

来源

蓝桥杯2015年决赛

conclude:

1.两个回溯(标记需要“切记:不能走原路,否则死循环”,递归for循环分类需要);

2.找最小问题用技巧减少递归次数;

3.读取空格隔开的字符不能用scanf;

#include <iostream>
#include <cstring>
using namespace std;
int mi=1000;
char map[100][100];
int mark[100][100]={0};
int x,y,n;
int x0,y0;
int a[4]={0,0,1,-1};              //这样下标就从0开始了。
int b[4]={1,-1,0,0};

void dfs(int k)
{
    if(x<1||y<1||x>n||y>n)       //出界递归结束
        {
            return;
        }
    if(k>mi)                    // !!!关键所在!!!
        return;                 //找最小,超过最小就不用找了,递归结束
    if(map[x][y]==‘B‘)
        {
               mi=k;
            return;            //找到了也要结束递归
        }
    mark[x][y]=1;
    for(int i=0;i<=3;i++)
        {
            if(map[x+a[i]][y+b[i]]!=map[x][y]&&!mark[x+a[i]][y+b[i]])
                {
                    x+=a[i];
                    y+=b[i];
                    dfs(k+1);
                    x-=a[i];   //循环内部回溯
                    y-=b[i];
                }
        }
    mark[x][y]=0;             //标记,不能走原路!!!!!循环外部也不要回溯 !!!
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                {
                    cin>>map[i][j];  //!!!!不能用scanf%c,他可以读取空格。
                    if(map[i][j]==‘A‘)
                        {
                            x=i;
                            y=j;
                        }
                }
        }
    dfs(0);
    if(mi==1000)
        cout<<-1;
    else
        cout<<mi;

}
时间: 2024-12-26 10:10:28

1647: 穿越雷区的相关文章

算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有趣的事情: 如果除去小明家不算,胡同里的其它门牌号加起来,刚好是100! 并且,小明家的门牌号刚好等于胡同里其它住户的个数! 请你根据这些信息,推算小明家的门牌号是多少? 请提交该整数,不要填写任何多

穿越300km沙漠:卡萨帝用7星服务做实体经济升级样板

3月31日,家住新疆克拉玛依戈壁沙漠"无人区"公路守护站的刘女士购买了1台卡萨帝洗衣机,在第2天中午,卡萨帝服务工程师就将洗衣机准时送达用户家.穿越300多公里的沙漠公路.冒着零下20多度的严寒,安装师傅的汽车也已经被沙石砸损,刘女士不禁为卡萨帝的七星级服务标准竖起大拇指,而这只是卡萨帝七星级服务的其中一个缩影.其背后,是由卡萨帝完备的服务链条作为支撑的7星级高端服务体系. 七星级服务:基于传统服务的"超级服务" 在过去的很长一段时间里,产业对"服务&qu

《星际穿越》关于时间与空间的思考

看完了近期比较火的影片星际穿越,重新刷新了我对世界对宇宙的价值观,可以说这是一部较为实体化把理论把宇宙呈现在观众眼中的影片,让那些不太明白理论的人同样可以感受到宇宙的奥秘,穿梭在宇宙之间,领略着超乎自然神奇力量的世界里,真是一个心旷神怡.相信每一个看完影片的观众都会为之称赞,称赞着自然法则的规律,称赞着科学的伟大,称赞着导演的构思与想象力.影片在现在看来太超前了,也尊重科学,对于科学理论的描述还是最大限度的贴近现有的物理学,除非真的到了那种无法解释而电影又必须用到的地方,导演才展开强大的想象力.

《长安十二时辰》。5星。大唐首都反恐24小时。基本是大片剧本。有创意的穿越架空小说。

有创意,基本是大片剧本,3分钟一转折,5分钟一高潮.主要故事是发生在大唐首都的反恐24小时,主人公身陷囹圄,遭遇黑白两道的追捕,多次万分危险差点送命,最终挫败了一场惊天大阴谋,挽救了危局. 剧本我给4星,涉及到的唐朝无数政治.经济.军事.生活.娱乐的细节我给5星. 本书基本可以归入架空小说,虚构了一段历史,最终由于主人公的努力,让历史按原来的轨迹走了下去.但是细看有一些情节可以说是穿越了.主要有三个穿越的情节:用旗语和鼓声传递信息.用石油制作炸弹.用狗去根据气味去跟踪. 跟所有的侦破小说一样,最

标准H.460公私网穿越视频解决方案

一.概述 H.460协议是一种网络通信协议,主要用于音视频的网络穿越,可以解决客户私网到公网,以及公网到私网的互相通信. 大连羽化集团是中国较大的零售业集团之一.目前羽化集团百货店已达20多家,营业面积一般在2万—6万平方米之间,组成了羽化集团.羽化集团突破传统百货的单一模式,形成了以“东北第一店”,并实现了百货店的连锁化经营.专业化管理.多样化发展.随着业务的发展建设1套远程会议系统,势在必行. 华为视讯系统自1993年成立以来,经过了近20年的深厚技术积累,视音频技术已经在全世界处于业界领先

腾讯QQ空间穿越时光轴3D特效

<DOCTYPE html> <html> <head> <title>腾讯QQ空间穿越光轴3D特效</title> <style> *{margin:0;padding:0;} body{ background-image:url("images/bg.png") fixed;//拖动鼠标图片不会上下移动 height:2000px; } .con{ width:1000px; /*heigth:500px;*/

第一章 穿越《编码时间》

宋海,是个标准的宅男,基本上除了上班就是宅在家里,不过他有自己的爱好,编程.他宅在家里不像其他人男孩那样打游戏,而是看编程的书,我去香港的论坛逛逛. 但是在别人的眼中,他就是苦逼的码农,整天在家里码代码. 宋海,他不像其他码农那样,只精通一样,他算是全栈工程师,前端,后端,服务器,慎重UI 他都会. 最近他完成了公司给他准备的一个大项目,也顺利上线了,慷慨的老板还给他发了丰富的奖金,顺便放了他几天小长假. 本来他准备宅在家里的,但是母亲要给他介绍女朋友,他最烦这个了,他要找的就是,遇到才是最美好

我与小娜(02):乘坐超速高铁,穿越时空60年

我与小娜(02):乘坐超速高铁,穿越时空60年?       2月2日早上,我与小娜乘坐地铁4号线赶往北京南站.9点30分开始检票,车站规定:凡电子身躯者,一律免票.我与小娜顺利登车,赶往南京. 10点整,列车慢慢加速启动.这时,列车服务员过来叫小娜钻进一个“小口袋”,算是她的“座位”,  列车加速期间,小娜在“小口袋“里面小声地问我:追回60年时间,需要几个小时?我对她说,大约4个多小时.       下午2点多一点,列车到达南京市浦口车站.这是我们航程的终点站,时间是1955年的夏天,外面天

“星际穿越”观后感(宇宙只是界面,科技永远触摸不到世界的本原)

今天刚看完诺兰的“星际穿越”,三个小时的电影确实给人一种震憾的感觉.看完后总有“一种声音”催促自己写上几行. 现在流行各类PAD.智能手机.当阅读长文时,在灵敏的触摸屏上用手指上下拖拉,屏幕上的文字不停快速移动,仿佛屏后有一长卷,在你的指挥下忠实地翻页.其实,这只是一种操作界面,为了照顾我们在日常生活中的习惯,这样安排就无需另附操作手册了.用手指上下拖拉表示滚屏,也可用手指“重按”表示上移,“轻按”表示下移.说到这儿,可能有人会问,这些话不是废话嘛. 莫急,再请用我们的脑子顺便引申一下,不经意间