第六届华为创新杯编程大赛-进阶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轮的主要内容,如果未能解决你的问题,请参考以下文章
湖南省第六届 中信软件教育杯 ???学生程序设计大赛试题 第三题 数字整除
第六届蓝桥杯大赛个人赛省赛java b组试题 三羊献瑞怎么解