fjptec-xm 发表于 2017-7-11 06:35:43

第六届华为创新杯编程大赛-进阶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;
bool flag=false;
int R,C;
void dfs(int p,int q)
{
if(p>=0&&p<R&&q>=0&&q<C&&map=='H')
{
flag = true;
return;
}
if(map=='-'||map=='H')
{
if(map=='-')
map='a';
dfs(p-1,q);
}
if(map=='-'||map=='H')
{
if(map=='-')
map='a';
dfs(p+1,q);
}
if(map=='-'||map=='H')
{
if(map=='-')
map='a';
dfs(p,q-1);
}
if(map=='-'||map=='H')
{
if(map=='-')
map='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;
if(map=='B')
{
tempi = i;
tempj = j;
}
}
dfs(tempi,tempj);
if(flag==true)
cout << &quot;Y&quot; << endl;
else
cout << &quot;N&quot; << endl;
return 0;
}
页: [1]
查看完整版本: 第六届华为创新杯编程大赛-进阶1第3轮