原题链接:STIPC-003_F.小柯来放水

F.小柯来放水

题目描述

夏天实在是太热了,小柯决定把周边所有的游泳池都填满水。
给定一个 n∗mn*mn∗m 的平面图,以 # 表示游泳池周围一圈的围挡,其余部分全部用 ∗*∗ 表示,题目保证 # 会形成闭环,即不会有缺口出现,且一张平面图中保证只有一个游泳池(闭环)。
现在,请你帮帮小柯,给定一张平面图,以 & 表示填入的水,请你将把游泳池填满后的新平面图打印在屏幕上。

输入格式

第一行输入两个整型数据 nnn 和 mmm ,分别代表平面图的行数和列数。
接下来的 nnn 行,每行输入 mmm 个字符,只有 ∗*∗ 或者 # 。

输出格式

第一行输出一个整数,表示填充水的格子数目。
第二行开始,输出填充后的 nnn 行 mmm 列平面图,即将游泳池填满后的样子。

输入输出样例

输入 #1:

6 6
******
**####
*##**#
##***#
#****#
######

输出 #1:

9
******
**####
*##&&#
##&&&#
#&&&&#
######
说明/提示

【样例解释】:

数据范围:3<=n,m<=503 <= n,m <= 503<=n,m<=50

题目解析:

本题考察的是广度优先搜索算法 (BreadthFirstSearch,BFS)(Breadth First Search,BFS)(BreadthFirstSearch,BFS) 或深度优先搜索算法 (DepthFirstSearch,DFS)(Depth First Search,DFS)(DepthFirstSearch,DFS) 。

根据题目描述,我们要将给定的大小为n行m列的矩阵中,将由“#”围成的封闭区域内所有 “*” 更改为 “&” ,然后输出。

题目保证有且仅有一个泳池,泳池边缘无缺口,泳池内部为封闭区域。故我们只需要找到第一个出现的 “#” ,并从它所在右下方的 “” 开始四方向的深搜或广搜,a[i][j]a[i][j]a[i][j] 的右下方为 a[i+1][j+1]a[i+1][j+1]a[i+1][j+1] ,把原数组所有的 “” 替换成 “&” ,最后输出答案。

AC代码(C++):
#include <bits/stdc++.h>
using namespace std;int n, m;
char a[105][105];
int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,-1,0,1 };void bfs()
{int x, y; x = y = -1;int dir; bool flag = false;queue<int> qx;queue<int> qy;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++)if (a[i][j] == '#'){x = i;y = j;flag = true;break;}if (flag) break;}qx.push(x + 1);qy.push(y + 1);a[x + 1][y + 1] = '&';int cnt = 1;while (!qx.empty()){x = qx.front(); qx.pop();y = qy.front(); qy.pop();for (int i = 0; i < 4; i++) if (0 <= (x + dx[i]) && (x + dx[i]) < n && 0 <= (y + dy[i]) && (y + dy[i]) < m)if (a[x + dx[i]][y + dy[i]] == '*'){qx.push(x + dx[i]);qy.push(y + dy[i]);a[x + dx[i]][y + dy[i]] = '&';cnt++;}}cout << cnt << endl;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++)cout << a[i][j];cout << endl;}
}int main()
{cin >> n >> m;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> a[i][j];bfs();return 0;
}

STIPC-003_编程挑战系列赛第三场(柯柯的期末祝福) _F.小柯来放水相关推荐

  1. STIPC-003_编程挑战系列赛第三场(柯柯的期末祝福) _E.公正的决赛

    原题链接:STIPC-003_E.公正的决赛 E.公正的决赛 题目背景 北京时间2021年6月16日凌晨,世预赛亚洲区A组末轮展开角逐,中国3-1击败叙利亚,成功晋级世预赛亚洲区12强赛. 题目描述 ...

  2. MJUPC-006_编程挑战系列赛第六场(以代码为文,贺国庆华诞) _G.原神:原石的优惠大礼包【升级版】

    原题链接:MJUPC-006_G.原神:原石的优惠大礼包[升级版] G.原神:原石的优惠大礼包 题目描述 米哈游公司下的著名开发世界冒险类游戏--原神,正迎来发行一周年的庆典活动,正因如此,瞧中商机的 ...

  3. MJUPC-006_编程挑战系列赛第六场(以代码为文,贺国庆华诞) _F.原神:原石的优惠大礼包

    原题链接:MJUPC-006_F.原神:原石的优惠大礼包 F.原神:原石的优惠大礼包 题目描述 米哈游公司下的著名开发世界冒险类游戏--原神,正迎来发行一周年的庆典活动,正因如此,瞧中商机的黄牛们纷纷 ...

  4. MJUPC-022_编程挑战系列赛第二十二场(以梦为“码“ “数“说未来)题解(C/C++代码)

    题目一:Hello MJUers 输出一个数学与数据科学学院(软件学院)社管中心科技部的Logo,做为打开MJUPC编程挑战系列赛大门的敲门砖. 此题为签到题,没有难度,但因Logo字符画中包含一些转 ...

  5. STIPC_编程挑战系列赛第一场(小郭的故事)_A.小郭最爱签到题

    原题链接:STIPC-001_A.小郭最爱签到题 A.小郭最爱签到题 题目背景 欢迎来到编程挑战赛第一场周赛! 我们是出题者--科创中心软件与程序设计兴趣小组. 我们的小组有三位技术骨干,这次的比赛中 ...

  6. 表示学习的挑战:三场机器学习竞赛报告Challenges in Representation Learning: A report on three machine learning contests

    摘要(Abstract) ICML 2013代表挑战研讨会学习3个主要关注三个挑战:黑盒学习挑战.面部表情识别挑战和多模态学习挑战.我们描述了为这些挑战创建的数据集,并总结了竞赛的结果.我们为未来挑战 ...

  7. 爱奇艺2018秋季校招测试工程师(第一场、第二场、第三场)编程题汇总 - 题解

    做了下爱奇艺2018测试工程师的编程题,教开发工程师还是偏简单,特意写了个编程题合集. 题目链接: 爱奇艺2018秋季校招测试工程师(第一场): 爱奇艺2018秋季校招测试工程师(第二场): 爱奇艺2 ...

  8. WindowsPhone7线下沙龙北京站(第三场)

    WindowsPhone7线下沙龙北京站(第三场) 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/ar ...

  9. 2019年的第三场LiveVideoStackCon有何不同?

    LiveVideoStack团队出品,12月13-14日深圳见. 文 / 包研 12月13-14日,今年第三场LiveVideoStackCon将在深圳举行,此前的4月和8月,LiveVideoSta ...

  10. 编程挑战系统的输入和输出详细说明

    在高校俱乐部线上编程挑战中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一个文本文件中.系统把输出文件与标准答案 ...

最新文章

  1. 为什么说新型冠状病毒疫苗会研制成功?
  2. 【Paper】2021_Optimal Distributed Leader-following Consensus of Linear Multi-agent Systems: A Dynamic
  3. docker 添加端口映射_Docker容器修改端口映射
  4. Android•Lottie动画库填坑记
  5. uni-app-页面结构
  6. Apollo进阶课程 ② | 开源模块讲解(上)
  7. python 异步下载图片_python3抓取异步百度瀑布流动态图片(二)get、json下载代码讲解...
  8. 编程时请选择正确的输入法,严格区分中英文
  9. vim关于python的自动补全插件
  10. python常用的十进制、16进制、字符串、字节串之间的转换
  11. matlab中boxplot函数的参数设置_Matlab箱形图boxplot函数用法
  12. LINQToSQL中如何更好的手动设置导航字段,并返回实名类型而不是匿名类型
  13. 电源电压测试肯定要电流探头吗?
  14. 如何检索论文被引用情况
  15. 知识图谱从入门到应用——知识图谱的知识表示:向量表示方法
  16. WEB 安全之 SQL注入一 盲注
  17. 跳过休息日(周末和节假日)
  18. java lifo 队列_java - 如何在LIFO模式下实现链接的阻塞队列 - SO中文参考 - www.soinside.com...
  19. sql查询将一对多转化为一对一
  20. 5 月计算机语言排行,TIOBE 5月编程语言排行榜

热门文章

  1. java定义个字符串_Java定义字符串(2种方式)
  2. echarts自定义legend图例和tooltip默认提示文字
  3. 【股票】股票是什么?什么情况下股票会涨?
  4. Debian7虚拟机安装
  5. vs助手使用期过 编译CEGUI的问题:error C2061: 语法错误: 标识符“__RPC__out_xcount_part” VS2010...
  6. CAD画图软件测试初学者,CAD制图初学入门:基础操作 平面绘图练习100题,新手必备...
  7. Pygame 打字游戏项目
  8. 画图清空画布,怎样将Word中会出现的绘图画布删除掉?
  9. 分享: Vue微信浏览器ios音乐自动播放
  10. 关于ubantu安装cmake