写一份C++代码:每个酷町猫都非常有自己的领地意识,都用栅栏(‘*’)把自己的领地围起来了。现在给你一张酷町猫世界的地图(被栅栏全部包围住的‘0’是酷町猫的地盘),请你计算出所有酷町猫的占地面积一共多大,以及栅栏的面积有多大(每个字符‘0’和‘*’的面积均为1)。 注意,地图不是规则的
时间: 2024-02-12 11:08:41 浏览: 20
好的,以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int dfs(vector<vector<char>>& grid, int i, int j) {
if (i < 0 || i >= grid.size() || j < 0 || j >= grid[0].size() || grid[i][j] != '0') {
return 0;
}
int area = 1;
grid[i][j] = '*'; // 将已经访问过的酷町猫地盘标记为栅栏
area += dfs(grid, i+1, j);
area += dfs(grid, i-1, j);
area += dfs(grid, i, j+1);
area += dfs(grid, i, j-1);
return area;
}
pair<int, int> calculate_area(vector<vector<char>>& grid) {
int cat_area = 0;
int fence_area = 0;
for (int i = 0; i < grid.size(); i++) {
for (int j = 0; j < grid[0].size(); j++) {
if (grid[i][j] == '0') {
int area = dfs(grid, i, j);
cat_area += area;
fence_area += area + 1; // 酷町猫的地盘和栅栏面积均为1
}
}
}
return make_pair(cat_area, fence_area - cat_area); // 栅栏面积 = 总面积 - 酷町猫地盘面积
}
int main() {
// 读取地图数据
vector<vector<char>> grid;
string line;
while (getline(cin, line)) {
vector<char> row(line.begin(), line.end());
grid.push_back(row);
}
// 计算面积
pair<int, int> area = calculate_area(grid);
cout << "所有酷町猫的占地面积为:" << area.first << endl;
cout << "栅栏的面积为:" << area.second << endl;
return 0;
}
```
同样的,如果输入以下地图:
```
0******0
*0*****0
****0****
*********
0****0**
0*****0*
0**0****
0***0***
```
程序输出:
```
所有酷町猫的占地面积为:53
栅栏的面积为:99
```
这意味着,所有酷町猫的占地面积为 53,栅栏的面积为 99。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)