ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

B4286 [蓝桥杯青少年组省赛 2022] 农作物题解

B4286 [蓝桥杯青少年组省赛 2022] 农作物题解 题目# B4286 [蓝桥杯青少年组省赛 2022] 农作物## 题目描述有一块农田被划分为 $N \times M$ 块农作物和杂草分布生长在农田中其中农作物使用大写字母 R 表示杂草使用大写字母 X 表示。请计算出农田中有几块独立的农作物区域独立的农作物区域指该区域上下左右都被杂草围住且 $N \times M$ 以外的区域都是杂草。例如样例是 $N4$$M4$ 的农田这块 $4 \times 4$ 的农田中有 $3$ 块独立的农作物区域。## 输入格式输入分为 $N1$ 行- 第一行为两个正整数 $N$ 和 $M$$1 N 500$$1 M 500$表示农田的长和宽数字间用一个空格隔开- 以下 $N$ 行每行有 $M$ 个大写字母表示每格为农作物或杂草。## 输出格式输出一个整数表示农田中有几块独立的农作物区域。## 输入输出样例 #1### 输入 #14 4RRRXRXRXXXXRRXXX### 输出 #13——————————————————————————————————AC代码cpp# include bits/stdc.h# define ll long longusing namespace std;int n,m,cnt0;char c[505][505]{};int q[4][2]{{0,-1},{0,1},{1,0},{-1,0}};void dfs(int x,int y){c[x][y]X;for(int i0; i3; i){int dxxq[i][0];int dyyq[i][1];if(dx1 dxn dy1 dym c[dx][dy]R){dfs(dx,dy);}}}int main(){cin nm;for(int i1; in; i){for(int j1; jm; j){cin c[i][j];}}for(int i1; in; i){for(int j1; jm; j){if(c[i][j]R){dfs(i,j);cnt;}}}cout cnt;return 0;}__________________________________________________________________分步1.定义cppint n,m,cnt0;char c[505][505]{};int q[4][2]{{0,-1},{0,1},{1,0},{-1,0}};2.输入cppcin nm;for(int i1; in; i){for(int j1; jm; j){cin c[i][j];}}3.dfs本题的dfs属于方向定义dfs的重点cppfor(int i1; in; i){for(int j1; jm; j){if(c[i][j]R){dfs(i,j);cnt;}}}cppvoid dfs(int x,int y){c[x][y]X;for(int i0; i3; i){int dxxq[i][0];int dyyq[i][1];if(dx1 dxn dy1 dym c[dx][dy]R){dfs(dx,dy);}}}4.输出cout cnt;5.总结本题6级dfs有难度
返回列表