华为创新杯编程大赛 java_第六届华为创新杯编程大赛-进阶1第3轮

题目忘记粘贴了,题目大致意思就是笨笨熊要搬家。它如今的家在B点,新的豪宅在H点。如今要从B点到H点

地图R表示行,C表示列。当中:

-表示能通过

#表示不能通过

B表示笨笨熊原来的家

H表示笨笨熊的新豪宅

输入

R

C

R×C矩阵

输出

Y//表示能够通过

N//表示不能够通过

解析:本来这道题非常明显。非常easy的搜索嘛,可是不知道是由于自己非常长时间不写搜索了还是怎么回事,一直在改代码,最后在超过时间给提交上去了,可是最后居然还返回分数了,完美AC哈。

直接贴个代码

#include

using std::endl;

using std::cin;

using std::cout;

char map[100][100];

bool flag=false;

int R,C;

void dfs(int p,int q)

{

if(p>=0&&p=0&&q

{

flag = true;

return;

}

if(map[p-1][q]=='-'||map[p-1][q]=='H')

{

if(map[p-1][q]=='-')

map[p-1][q]='a';

dfs(p-1,q);

}

if(map[p+1][q]=='-'||map[p+1][q]=='H')

{

if(map[p+1][q]=='-')

map[p+1][q]='a';

dfs(p+1,q);

}

if(map[p][q-1]=='-'||map[p][q-1]=='H')

{

if(map[p][q-1]=='-')

map[p][q-1]='a';

dfs(p,q-1);

}

if(map[p][q+1]=='-'||map[p][q+1]=='H')

{

if(map[p][q+1]=='-')

map[p][q+1]='a';

dfs(p,q+1);

}

}

int main()

{

cin >> R >> C;

int tempi,tempj;

for(int i=0;i

for(int j=0;j

{

cin >> map[i][j];

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

{

tempi = i;

tempj = j;

}

}

dfs(tempi,tempj);

if(flag==true)

cout << "Y" << endl;

else

cout << "N" << endl;

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值