红与黑
【问题描述】
有一间长方形的房子, 地上铺了红色。黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上, 只能向相邻的黑色瓷砖移动。请写一个程序。计算你总共能够到达多少块黑色的瓷砖。
输入:第一行是两个整数w和h。分别表示x方向和y方向瓷砖的数量。w和h都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色。规则如下:
1)'.': 黑色的瓷砖;
2) '#': 红色的瓷砖;
3)'@': 黑色的瓷砖,并且你站在这块瓷砖上该字符在每个数据集合中唯一出现一次。
输出: 显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。
【样例输入】
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
【样例输出】
45
#include<iostream> using namespace std; int m,n,posX,posY,cnt=0; char a[21][21]; void dfs(int x, int y){ if(x<1||x>m||y<1||y>n||a[x][y]=='#'){ return; } // 搜索前标记并且记录瓷砖的个数。 a[x][y]='#'; cnt++; // 递归深搜。 dfs(x-1,y); // 上搜。 dfs(x+1,y); // 下搜。 dfs(x,y-1); // 左搜。 dfs(x,y+1); // 右搜。 return; } int main(){ cin>>n>>m; for(int i=1; i<=m; i++){ for(int j=1; j<=n; j++){ cin>>a[i][j]; if(a[i][j]=='@'){ // 记录当前站的位置。 posX=i; posY=j; } } } dfs(posX,posY); cout<<cnt; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现