蓝桥杯c语言a组2015,2015第七届蓝桥杯决赛C语言A组--穿越雷区(DFS)

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

资源约定:

峰值内存消耗 < 512M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

剪枝条件为:判断是否出界以及搜索到下一位置的符号是否与当前位置符号相反。。

#include

#include

int flag[105][105];

char map[105][105];

int n;

int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

int min=1<<30;

int check(int x,int y,int sx,int sy)

{

if(sx<0 || sx>=n || sy<0 || sy>=n || (map[x][y]==map[sx][sy])) //判断下一位置是否出界以及符号是否相反。

return 1;

return 0;

}

void dfs(int x,int y,int count)

{

int i;

if(map[x][y]=='B')

{

if(count

min=count;

return;

}

for(i=0;i<4;i++)

{

int sx=x+dir[i][0];

int sy=y+dir[i][1];

if(!flag[sx][sy] && !check(x,y,sx,sy))

{

flag[sx][sy]=1;

dfs(sx,sy,count+1);

flag[sx][sy]=0;

}

}

}

int main()

{

int i,j;

int x,y;

memset(flag,0,sizeof(flag));

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

scanf("%*c%c",&map[i][j]);

if(map[i][j]=='A')

{

x=i;

y=j;

}

}

dfs(x,y,0);

if(min==1<<30)

printf("-1\n");

else

printf("%d\n",min);

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nil,Nil,NULL,NSNull

nil&#xff1a;指向oc中对象的空指针 Nil&#xff1a;指向oc中类的空指针 NULL&#xff1a;指向其他类型的空指针&#xff0c;如一个c类型的内存指针 NSNull&#xff1a;在集合对象中&#xff0c;表示空值的对象 NSURL *url nil&#xff1b;Class class Nil&#xff1b;int …

c int转char数组_C语言 指向数组和字符串的指针

实例1我们在pointer_test.c的文件中写一个test2()函数&#xff0c;我们定义一个有3个元素的字符数组初始化值分别为&#xff0c;’A’, ’B’, ’C’&#xff0c;然后定义一个字符指针pc&#xff0c;把数组ca的首地址复制给字符指针pc,然后通过访问指针变量pc,来读取指针变量pc…

python代码画小狗_程序员教你用代码手绘一只可爱的小狗,正好拿去送给女朋友给她个惊喜...

最近经常在抖音上刷到会画画的大神给小姐姐手绘各种可爱的小动物&#xff0c;非常的哇塞哦~ 作为程序员的我那是羡慕不已啊&#xff01;我要是学会这招是不是可以尝试给我心仪很久的女神告白了&#xff1f;女神没准会很开心&#xff01;&#xff08;好吧&#xff0c;我承认我是…

三个用户在同一系统中同时对他们的c语言,杭州电子科技大学学生考试卷2013年操作系统试卷(2份,有答案)...

内容简介&#xff1a;杭州电子科技大学学生考试卷2013年操作系统试卷(2份&#xff0c;有答案)杭州电子科技大学学生考试卷(A )卷一、判断题(共10分,每小题1分&#xff0c;正确的打√&#xff0c;错误的打)1&#xff0e;分布式操作系统和网络操作系统都是建立在网络的基础之上&a…

ASP.NET方面的一些经典文章收集

1. 在ASP.NET中执行URL重写 文章地址&#xff1a;https://msdn.microsoft.com/zh-cn/library/ms972974.aspx 2. 在ASP.NET中如何实现和利用URL重写 文章地址&#xff1a;http://tech.it168.com/msoft/2008-01-08/200801080919796.shtml 3. Log4Net使用指南 文章地址&#xff1a…

如何修改emcp的sn号_百家号领域选择错误怎么办?百家号怎么更改领域?

我之前就强调过&#xff0c;做自媒体运营&#xff0c;正式开始之前&#xff0c;先做好定位&#xff0c;选好自己擅长的或者感兴趣的细分领域&#xff0c;这样才能保证以后能长期做&#xff0c;保证内容的输出量。很很多新人听说自媒体能赚钱&#xff0c;就直接进来了&#xff0…

apache根据ip分发_腾讯广告进入“IP新融点”时代

文 | 若谷广告业务增长放缓&#xff0c;会员数量持增&#xff0c;爆款内容产品难遇&#xff0c;品牌方需求升级&#xff0c;在这样现实情境下&#xff0c;传统营销模式亟待升级&#xff0c;腾讯广告就此进行了一次综合性的变革&#xff0c;以IP新融点方式进行应对这一现实挑战。…

分治法求数组最大值 c语言,使用分治法求最大子数组的下标。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includeint max(int a[],int left,int right);int maxcross(int a[],int left,int right,int middle);int xyzleft,xyzright;int main(){int T;int asd;int num[100000];scanf("%d",&T);while(T--){scanf("%d&…

eclipse下创建Maven项目

1.选择创建Maven项目&#xff0c;选择不适用骨架形式&#xff08;Creat a simple project&#xff09; 如图&#xff1a; 2.packing选择war的形式 如图&#xff1a; 由于packing是war形式&#xff0c;那么下面就出现了webapp的目录 3.由于我们要用eclipse把项目发布到tomcat…

git add remote_最全的git常用命令(建议收藏)

一、 Git 常用命令速查git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释git remote add origin git192.168.1.119:ndshowgit push origin maste…

c语言链表复数实验,数据结构实验—复数计算器 大神提意见

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼// cDlg.cpp : 实现文件//#include "stdafx.h"#include "c.h"#include "cDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAb…

Windows系统启动自动运行cmd命令

添加计划任务 转载于:https://www.cnblogs.com/qingyuuu/p/4565579.html

stm32l0的停止模式怎么唤醒_Mac外接显示器的显示模式怎么设置

不少人在使用Mac笔记本的时候都会想要为电脑外接一个大一点的显示器呢&#xff01;要知道在外接显示器中可是有着四种显示模式呢&#xff01;你知道Mac外接显示器的显示模式怎么设置吗&#xff1f;想要了解有关显示模式的各种问题么&#xff1f;快来阅读下面的这篇文章来寻找答…

android 评价 星星大小,Android RatingBar 评价栏 星星 大小 样式 设置

Android系统自带RatingBar&#xff0c;无法直接指定宽高&#xff0c;不然会出现无法全部显示的情况&#xff0c;使用系统自带的两个主题?android:attr/ratingBarStyleIndicator和?android:attr/ratingBarStyleSmall也只能做到固定小版或者大版。按照以下几个步骤 可以做到自控…

Guava源码分析——Immutable Collections(4)

Immutable的集合体系&#xff0c;还有中很重要的集合没有介绍&#xff0c;就是ImmutableMap&#xff0c;通过UML图&#xff0c;可以看出ImmutableMap的结构体系。 首先来看一下ImmutableBiMap&#xff0c;因为普通ImmutableMap的实现依赖于它。ImmutableBiMap在ImmutableMap的基…

dual mysql 获取序列_MySQL获取周、月、天日期,生成排序号

常用MySQL生成时间序列--生成最近七天的日期&#xff0c;不包括当天SELECT cdate : date_add(cdate, interval - 1 day) as date FROM(SELECT cdate : date_add(date_sub(CURDATE(),interval 1 DAY), interval 1 DAY) from resource_publish) t0 LIMIT 7;2020-06-162020-06-15…

建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...

​如何看懂建筑电气工程图&#xff1f;我们可能知道AutoCAD&#xff0c;也可能知道在迅捷CAD图库下载建筑电气工程图纸&#xff0c;还可能会使用CAD绘制简单的图形对象。但是&#xff0c;当我们需要进行建筑识图的时候&#xff0c;你也可能连里面的经典图纸符号都不认识。如何看…

Android仿探探卡片拖拽,Vue 仿探探拖拽卡片的效果

原标题&#xff1a;Vue 仿探探拖拽卡片的效果已更新Vue3版&#xff0c;请给前端大全发送关键字vue3仿探探获取Vue3版类似 Tinder 和 探探 的卡片效果的组件&#xff0c;社区中已经非常多了。我这一版除了可以实现和他们一样的效果外。还增加了 飞卡 的效果&#xff0c;就是类似…

Codeforce 水题报告(2)

又水了一发Codeforce &#xff0c;这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C&#xff1a;The Child and Polygon: 描述&#xff1a;给出一个多边形&#xff0c;求三角剖分的方案数&#xff08;n<200&#xff09;。 首先很明显可能是区间dp&#xff0c;我们…

itextpdf 怎么下划线_itext生成pdf设置下划线,itextpdf下划线,使用setUnderli

itext生成pdf设置下划线&#xff0c;itextpdf下划线,使用setUnderli使用setUnderline设置iText对象下划线显示我们可以使用setUnderline(float thickness, float yPosition)方法设置一个iText的Chunk对象下划线的显示样式。setUnderline方法的参数介绍&#xff1a;public Chunk…