【华为OD】B\C卷真题 100%通过:需要打开多少监控器 C/C++实现

【华为OD】B\C卷真题 100%通过:需要打开多少监控器  C/C++实现

目录

题目描述:

示例1

代码实现:


题目描述:

某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开;

给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器;

输入描述

第一行输入m,n表示长宽,满足1

输出描述

最少需要打开监控器的数量;

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3 3
0 0 0
0 1 0
0 0 0

输出

5

代码实现:

 

#include 
#include 
using namespace std;

int getCnt(const vector> &park)
{
	int count = 0;
	int m = park.size();
	int n = park[0].size();
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			if (park[i][j] == 1) {
				count++;
			}
			else if (j - 1 >= 0 && park[i][j - 1] == 1) {
				count++;
			}
			else if (j + 1 < n && park[i][j + 1] == 1) {
				count++;
			}
			else if (i - 1 >= 0 && park[i - 1][j] == 1) {
				count++;
			}
			else if (i + 1 < m && park[i + 1][j] == 1) {
				count++;
			}
		}
	}
	return count;
}
int main() {
	int m, n;
	cin >> m >> n;
	vector> park(m, vector(n,0));
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			cin >> park[i][j];
		}
	}
	cout << getCnt(park) << endl;
	return 0;
}

你可能感兴趣的:(华为OD_ABCD真题,算法,华为od,c++,c语言,数据结构,动态规划)