嵊州D1T2

圣女

马格里多希望为自己死去却身体不腐的女儿申请圣女。

只是,他不知道神圣的基督教和教皇已经腐朽到了何种地步!

22 年来,他辗转教皇国的各个教堂,但各个教堂都只会以各种理由搪塞、推辞。

教皇国可以看做一个 n ∗ n 的矩形,每个位置都有一个教堂,教堂有不同的种类。教皇所在的位置是 (n, n),马格里多可以在 (1, 1) (1.n) (n, 1) 中任意一个位置开始自己的旅程。

A 教堂:马格里多可以在牧师的指引下向上/下/左/右任意一个方向移动一格。

B 教堂:马格里多可以在牧师的指引下向上/下/左/右任意一个方向移动两格。

C 教堂:马格里多可以在牧师的指引下向左上/左下/右上/右下任意一个方向移动一格。

D 教堂:贪婪的牧师或者教皇会卷走马格里多的所有财产,使他不能继续自己的旅程。

马格里多经历每个教堂都需要一天的时间。

如果他不能为自己的女儿申请为圣女,请告诉他“Go to find Marx”,否则请告诉他,他的旅程最少需要多少天?

Input

第一行一个整数 n; 接下来 n 行,每行 n 个字母(A, B, C, D)表示教堂的种类。

Output

第一行一个整数表示最少的天数或者“Go to find Marx”(“引号不要输出”)

Examples

saint.in                               saint.out

3 ADC DAC ACA               Go to find Marx

3 AAA CAA AAA                3

Notes

对于所有数据,满足 n ≤ 1000。

Task1[40pts]

n ≤ 4

Task2[10pts]

只有 A,B 且 B 的个数小于等于 5

Task3[10pts]

没有 D

Task4[40pts]

无特殊限制


solve!

这是一道典型的走迷宫的例题,用搜索嘛。

至于是DFS(深搜)还是BFS(广搜),我们有很大很大的争论。

下午讲题时,老师的题解上

所以我要认真研究一下两种搜索,都要!

基本思路

深度优先遍历图的方法是,从图中某顶点v出发:
(1)访问顶点v;
(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS)
首先看顶点:可以从(1,1)(1,n)(n,1)出发。就有了三个v点
再:分别的从v出发,至每一个它的上下左右的教堂。这里就要一个bool数组来标记是否已经访问过了。
A:上下左右全部搜
B:上下左右两格全部搜
C:四个斜角全部搜
D:直接return;
同时,还要不让数组越位
 
//3 AAA CAA AAA
//测试数据
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
char dt[][];
bool bj[][],ans=;
const int inf = 0x3f3f3f;
int n,d=,day=,minday=inf;
void jt(int x,int y){//dt[x][y]就是当前那个人在的地方
if(!(x>=&&x<=n&&y>=&&x<=n)) return;//确保数组不越位
if(bj[x][y]) return;
bj[x][y]=true;//标记 bool flag=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
flag=bj[i][j]&&flag;
if(flag){
ans=;
minday=min(minday,day);
}
//搜索
if(dt[x][y]=='A')
{
day++;
jt(x+,y);
jt(x-,y);
jt(x,y+);
jt(x,y-);
day--;
}
if(dt[x][y]=='B')
{
day++;
jt(x+,y);
jt(x-,y);
jt(x,y+);
jt(x,y-);
day--;
}
if(dt[x][y]=='C')
{
day++;
jt(x+,y+);
jt(x-,y+);
jt(x+,y-);
jt(x-,y-);
day--;
}
if(dt[x][y]=='D') return; bj[x][y]=false;
return;
}
int main()
{
//freopen("saint.in","r",stdin);
//freopen("saint.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
dt[i][j]=getchar();
}
jt(,n);
jt(,);
jt(n,);
if(ans)
printf("%d",minday);
else
printf("Go to find Marx");
return ;
}

没问题!

开始的问题嘛,在于忘记先判断dt(地图)[x][y]是否已经被标记过了

OK!

 

嵊州D1T2 圣女的更多相关文章

  1. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  2. 嵊州D4T2 硬币 有人来教教我吗!

    嵊州D4T2 硬币 [问题描述] 卡拉赞的展览馆被入侵了. 展览馆是一条长长的通道,依次摆放着 n 个展柜(从西到东编号依次 为 1—n). 入侵者玛克扎尔在第 n 个展柜东边召唤了一个传送门,一共施 ...

  3. 嵊州D3T2 福尔贝斯太太的快乐夏日 summer

    宗教,或是无节制的自由主义,是致人腐化的毒剂. 现在,一个人要经历 n 个事件,编号为 1 ∼ n. 经历 x 号事件,他的危险值就会增加 x. 一开始他的危险值是 0. 当一个人的危险值大于 0 且 ...

  4. 嵊州D3T3 light

    嵊州D3T3 light 光恰似水 兄弟俩曾经 k 次受到过父母的物质激励. 一开始,兄弟俩的能力值为 1,最后,兄弟俩的能力值是 1 + (2 ^k−1)/ n . 当兄弟俩受到价值为 mi 的物质 ...

  5. 嵊州D3T1 山魔 烙饼问题

    嵊州D3T1 山魔 有n 座山,每座山有南北两面. 每一天,一些山的某一面(不一定相同) 会受到山魔的袭击. 但是山魔一天最多只会袭击k座山. 当每座山的每一面都被袭击过后,山魔就会离开. 那么至少要 ...

  6. 嵊州D2T3 玛利亚∙多斯普拉泽雷斯 完美配对

    嵊州D2T3 玛利亚∙多斯普拉泽雷斯 公墓一共有 n 个墓地,通过 n − 1 条通道相连. 每次,推销员可以在选择一个墓地推销给玛利亚. 但是,考虑很多的玛利亚会尽量否决这个提议. 她会选择一个墓地 ...

  7. 嵊州D2T2 八月惊魂 全排列 next_permutation()

    嵊州D2T2 八月惊魂 这是一个远古时期的秘密,至今已无人关心. 这个世界的每个时代可以和一个 1 ∼ n 的排列一一对应. 时代越早,所对应的排列字典序就越小. 我们知道,公爵已经是 m 个时代前的 ...

  8. 嵊州D2T1 “我只是来打个电话”

    嵊州D2T1 “我只是来打个电话” 精神病院有一个这样的测试. 给出一个正整数集合,集合中的数各不相同,然后要求病人回答: 其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 回答正确的人,即可 ...

  9. 嵊州D1T4 cf1174E 占梦人

    嵊州D1T4 cf1174E 此题为改编题,原题:cf1174E 占梦人 占梦人一个晚上会做 n 个梦,编号为 1 ∼ n,她可以安排做这 n 个梦的顺序. 假如她第一个做了编号为 x 的梦,那么她的 ...

随机推荐

  1. js 小野人跟着鼠标移动

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  2. 将RDL报表转换成RDLC报表的函数

    原文:将RDL报表转换成RDLC报表的函数 近日研究RDLC报表,发现其不能与RDL报表兼容,尤其是将RDL报表转换成RDLC报表.网上的资料贴出的的转换方式复杂且不切实际,遂决定深入研究.经研究发现 ...

  3. WPF中获取鼠标相对于屏幕的位置

    原文:WPF中获取鼠标相对于屏幕的位置 WPF中获取鼠标相对于屏幕的位置                                   周银辉WPF编程时,我们经常使用Mouse.GetPosi ...

  4. centos7安装 lamp

    1.安装apache yum install httpd #根据提示,输入Y安装即可成功安装 systemctl start httpd.service #启动apache systemctl sto ...

  5. 基于Spring开发

    1. XML Schema 1.1 最简单的标签 一个最简单的标签,形式如: <bf:head-routing key="1" value="1" to= ...

  6. ML:吴恩达 机器学习 课程笔记(Week1~2)

    吴恩达(Andrew Ng)机器学习课程:课程主页 由于博客编辑器有些不顺手,所有的课程笔记将全部以手写照片形式上传.有机会将在之后上传课程中各个ML算法实现的Octave版本. Linear Reg ...

  7. 瑞芯微RK3399宣布系统开源,进入百余种行业市场!

    集微网消息,2月24日瑞芯微官方突然宣布, Rockchip RK3399Linux系统开源!作为Rockchip旗舰级芯片,RK3399具有高性能.高扩展.全能型应用特性. 这一重磅消息立马刷爆朋友 ...

  8. 不同格式图片相互转换的开源库分享(使用CxImage,并有VC6的配置过程)

    不同格式图片相互转换的开源库分享 一.背景 笔者在项目的开发中,需要调用windows下的COM接口SetIconLocation来实现桌面快捷方式.而我们项目中给定的图片格式为png格式,SetIc ...

  9. Qt技术优势

    1. Qt这个C++的图形库由Trolltech在1994年左右开发.它可以运行在Windows,Mac OS X, Unix,还有像Sharp Zaurus这类嵌入式系统中.Qt是完全面向对象的. ...

  10. 原生js封装轮播图

    个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...