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

教育网站解决方案销售网络平台

教育网站解决方案,销售网络平台,郓城网站建设公司,甘肃营销型网站制作文章目录 分值:200题目描述思路复杂度分析AC 代码 分值:200 题目描述 存在一个 m * n 的 二维数组只,其成员取值范围为0, 1, 2。其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。而值为2的元素…

文章目录

      • 分值:200
      • 题目描述
      • 思路
      • 复杂度分析
      • AC 代码

分值:200

题目描述

存在一个 m * n 的 二维数组只,其成员取值范围为0, 1, 2。其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。而值为2的元素,免疫同化。
将数组所有成员随机初始化只为02,再将矩阵的[0,0]元素修改成1,在经过足够长的时间后,求矩阵中有多少个元素是02(即02数量之和)。
输入描述:
输入的前两个数字是矩阵大小nm
接着输入nm列,表示矩阵信息。
输出描述:
返回矩阵中非 1的元素个数。

示例1
输入:
4 4
0 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
输出:
3
解释:
除了矩阵中 3 个值为2的元素,其他元素全部同化为1了。

示例2
输入:
4 4
0 2 0 0
0 2 0 0
0 2 0 0
0 2 0 0
输出:
12
解释:
只有第一列被同化为1了,第2、3、4列没有被同化,因为第二列全是值为2的元素,阻挡住同化了。

Tips:

  • 0 < m, n <= 30

思路

  • 将上下左右值为0的元素同化为1 这点可以联系到BFS,这是一道很经典的宽度优先搜索的题目,可以当做模板题进行练习。
  • [0, 0]开始出发,只有值为0的元素才能被同化,所以只将1周围的 0 元素放进队列,直到队列为空即可。
  • 答案要求返回矩阵中非 1的元素个数。可以在遍历的同时进行计算,每当有一个元素被同化,那么ans就减一。

复杂度分析

  • 时间复杂度: O ( n ∗ m ) O(n*m) O(nm),其中NM分别为矩阵的行长跟列长,每个位置只需要访问一次。
  • 空间复杂度: O ( n ∗ m ) O(n*m) O(nm),其中NM分别为矩阵的行长跟列长,用于存储矩阵信息。

AC 代码

C++ 版

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, m, ans, dis[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};cin >> n >> m;vector<vector<int>> mx(n, vector<int>(m));for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> mx[i][j];}}mx[0][0] = 1;// 一开始 0 跟 2 的个数之和, 后面每次有同化的就 -1 即可ans = n * m - 1;queue<pair<int, int>> q;q.push({0, 0});while (!q.empty()){auto t = q.front();q.pop();for (int i = 0; i < 4; i++){int x = t.first + dis[i][0], y = t.second + dis[i][1];if (x >= 0 && x < n && y >= 0 && y < m && mx[x][y] == 0){mx[x][y] = 1;ans--;q.push({x, y});}}}cout << ans << endl;return 0;
}

JAVA 版

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int ans;int[][] dis = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int[][] mx = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {mx[i][j] = scanner.nextInt();}}mx[0][0] = 1;ans = n * m - 1;Queue<int[]> q = new LinkedList<>();q.add(new int[]{0, 0});while (!q.isEmpty()) {int[] t = q.poll();for (int i = 0; i < 4; i++) {int x = t[0] + dis[i][0];int y = t[1] + dis[i][1];if (x >= 0 && x < n && y >= 0 && y < m && mx[x][y] == 0) {mx[x][y] = 1;ans--;q.add(new int[]{x, y});}}}System.out.println(ans);}
}

Python 版

from collections import dequen, m = map(int, input().split())
ans = 0
dis = [[-1, 0], [1, 0], [0, -1], [0, 1]]mx = []
for _ in range(n):mx.append(list(map(int, input().split())))mx[0][0] = 1
ans = n * m - 1
q = deque([(0, 0)])while q:t = q.popleft()for i in range(4):x = t[0] + dis[i][0]y = t[1] + dis[i][1]if 0 <= x < n and 0 <= y < m and mx[x][y] == 0:mx[x][y] = 1ans -= 1q.append((x, y))print(ans)
http://www.tj-hxxt.cn/news/14213.html

相关文章:

  • 长安网站建设高手优化网站
  • 免费信息网站建设搜索引擎优化技术有哪些
  • 上海市建设工程安全生产协会网站百度营销推广靠谱吗
  • 中国外贸网优化设计卷子答案
  • wordpress超级排版器插件开鲁seo网站
  • 为什么凡科网做的网站无法搜索常见的营销策略有哪些
  • 做外贸家纺资料网站百度宣传广告要多少钱
  • 广州做外贸网站多少钱百度网络营销
  • 主流跨境电商平台有哪些?宁波网站制作优化服务
  • 廉洁广州在线网站建设广告软文小故事200字
  • 河南省住房和城乡建设厅官网查询福州seo按天收费
  • 福州市交通建设集团有限公司 网站怎么在百度上发布自己的信息
  • vultr安装WordPress目录seo推广教程视频
  • 洛阳网站建设长沙网站优化指导
  • 兰州网站建设 冰雨怎么做ppt
  • 磁县网站制作公司seo效果最好的是
  • 平面设计十大风格整站seo优化哪家好
  • 用花生做网站比较靠谱的网站
  • 太仓网站建设企业网站网球新闻最新消息
  • 安阳 做网站seo中介平台
  • wordpress 获取分类名称台州seo快速排名
  • 泉州网站建设哪家专业公司网站制作流程
  • 淘宝网站icp备案营销推广技巧
  • js网站一键变灰百度seo排名优化软件
  • 国际顶尖设计公司seo搜索引擎优化论文
  • 松岗做网站哪家便宜app推广公司怎么对接业务
  • qq空间做单页网站广州网络推广
  • 做医院网站互联网平台公司有哪些
  • 网站灰色百度网站站长工具
  • 惠普电脑网站建设策划方案恶意点击软件