当前位置: 首页 > article >正文

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

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

目录

题目描述:

示例1

代码实现:


题目描述:

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

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

输入描述

第一行输入m,n表示长宽,满足1<m,n<=20;后面输入m行,每行有n个0或1的整数,整数间使用一个空格隔开,表示该行已停车情况,其中0表示空位,1表示已停;

输出描述

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

示例1

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

输入

3 3
0 0 0
0 1 0
0 0 0

输出

5

代码实现:

 

#include <vector>
#include <iostream>
using namespace std;

int getCnt(const vector<vector<int>> &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<vector<int>> park(m, vector<int>(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;
}


http://www.kler.cn/a/146775.html

相关文章:

  • 《通往人工智能深度学习专家之路:全面解析学习路线图》
  • 人工智能的未来展望与挑战
  • LeetCode 2816.翻倍以链表形式表示的数字
  • IPTV智慧云桌面,后台服务器搭建笔记
  • Qt 之 qwt和QCustomplot对比
  • PySpark——Python与大数据
  • java集合,ArrayList、LinkedList和Vector,多线程场景下如何使用 ArrayList
  • SQL Server:流程控制语言详解
  • leetcode 不同的二叉搜索树
  • java基础-运算符
  • virtualList 封装使用 虚拟列表 列表优化
  • 第四节HarmonyOS 熟知开发工具DevEco Studio
  • 深入解析:如何开发抖音票务小程序
  • CANdelaStudio 中 Bese Variant 和 Variant区别
  • JavaScript WebApi(二) 详解
  • Redis 命令处理过程
  • SIPp mac和debian用法可能略有差别
  • 【数据中台】开源项目(2)-Wormhole流式处理平台
  • 【0239】从编译原理角度理解 #include “xxx“ 或 #include<xxx> 的实现机制
  • 部署jekins遇到的问题
  • 初识Spring (Spring 核心与设计思想)
  • WEB渗透—反序列化(七)
  • 大数据-之LibrA数据库系统告警处理(ALM-37004 Datanode主备不同步或者断连)
  • CGAN原理讲解与源码
  • 机器人分类
  • zi定义指令