内蒙古网站建设流程,检察机关门户网站建设,关于网站开发技术,百度手机助手下载2021新版一:题目
题目描述 小明有一块空地#xff0c;他将这块空地划分为 nn 行 mm 列的小块#xff0c;每行和每列的长度都为 1。
小明选了其中的一些小块空地#xff0c;种上了草#xff0c;其他小块仍然保持是空地。
这些草长得很快#xff0c;每个月#xff0c;草都会向外…一:题目
题目描述 小明有一块空地他将这块空地划分为 nn 行 mm 列的小块每行和每列的长度都为 1。
小明选了其中的一些小块空地种上了草其他小块仍然保持是空地。
这些草长得很快每个月草都会向外长出一些如果一个小块种了草则它将向自己的上、下、左、右四小块空地扩展
这四小块空地都将变为有草的小块。请告诉小明kk 个月后空地上哪些地方有草。
输入描述 输入的第一行包含两个整数 n, mn,m。
接下来 nn 行每行包含 mm 个字母表示初始的空地状态字母之间没有空格。如果为小数点表示为空地如果字母为 gg表示种了草。
接下来包含一个整数 kk。 其中2 \leq n, m \leq 10001 \leq k \leq 10002≤n,m≤10001≤k≤1000。
输出描述 输出 nn 行每行包含 mm 个字母表示 kk 个月后空地的状态。如果为小数点表示为空地如果字母为 gg表示长了草。
输入输出样例 示例 输入
4 5
.g...
.....
..g..
.....
2
copy
输出gggg.
gggg.
ggggg
.ggg.二:上码
/**思路:1.这里要用到BFS遍历,什么意思呢BFS遍历广度优先遍历,就是我们需要遍历该节点的临结点,如果临界点为 . 的话那就给其赋值同时记得标记上该结点已经访问过了等到该访问该节点时我们就不用再访问了。 2.同时还要注意一个问题我们需要考虑到处在边界的元素,因为边界上无 上/左/右/下对此的处理 我们是从[1,1]开始我们的第一个元素同时尽量将我们的数组范围开的大一些 **/
#includebits/stdc.h
using namespace std;char ans[1005][1005];
int visited[1005][1005] {false};
int m,n,k;void Bfs(int i,int j) {if(ans[i][j] . visited[i][j] false){ans[i][j] g;visited[i][j] true; }}int main () {cin m n;for (int i 1; i m; i) {for (int j 1; j n; j) {cin ans[i][j];}} cin k;while(k--) {memset(visited,false,sizeof(visited));//这个是为了解决 不同月分草的生长。 for (int i 1; i m; i) {for (int j 1; j n; j) {if (ans[i][j] g visited[i][j] false) {Bfs(i-1,j);Bfs(i1,j);Bfs(i,j-1);Bfs(i,j1);} }} }for (int i 1; i m; i) {for (int j 1; j n; j) {cout ans[i][j];}cout endl;}}