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

Posted brucemengbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六届华为创新杯编程大赛-进阶1第3轮相关的知识,希望对你有一定的参考价值。

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

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

-表示能通过

#表示不能通过

B表示笨笨熊原来的家

H表示笨笨熊的新豪宅

输入

R

C

R×C矩阵

输出

Y//表示能够通过

N//表示不能够通过

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

直接贴个代码

#include <iostream>
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<R&&q>=0&&q<C&&map[p][q]==‘H‘)
	{
		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<R;++i)
		for(int j=0;j<C;++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;
}

以上是关于第六届华为创新杯编程大赛-进阶1第3轮的主要内容,如果未能解决你的问题,请参考以下文章

“华为杯”大连理工大学第12届大学生程序设计大赛

湖南省第六届 中信软件教育杯 ???学生程序设计大赛试题 第三题 数字整除

第六届蓝桥杯大赛个人赛省赛java b组试题 三羊献瑞怎么解

2020“浦东杯”长三角人工智能创新应用大赛启动仪式顺利举行

Imagine Cup 微软“创新杯”全球学生科技大赛

50万奖金池:欢迎全球学子报名参加中国移动第二届梧桐杯大数据应用创新大赛湖北赛道