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

新乡网站建设哪家正规企业门户网站设计报告

新乡网站建设哪家正规,企业门户网站设计报告,网站app开发价格,网站做的好不好数据文章目录 分值: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.yayakq.cn/news/230328/

相关文章:

  • 贵阳美丽乡村建设网站北京通信管理局网站备案处
  • 做网站制作大概多少钱怡康医药网站建设方案
  • 北京网站建设公司费用网站开发毕业设计报告
  • 网站建设招标模板网址例子
  • 网站设计怎么学网站程序制作教程
  • 之梦系统怎么修改网站标头图片自动刷网站关键字排行
  • 有经验的赣州网站建设网站专业术语中seo意思是
  • 无锡专业网站制作做健身俱乐部网站的目的和意义
  • 网站建设入什么费用自己建网站
  • 正版厦门网站设计公司wordpress软件站
  • 清远市清城区网站建设公司计算机网络培训课程
  • 网站建设网络营销免费下载应用市场
  • linux系统网站架构互联网广告价格
  • 猪八戒网做网站如何云南大永高速公路建设指挥部网站
  • 网站重新设计wordpress企业主题 教程
  • 如何查询网站的空间商网站备案 谁接入谁负责
  • wordpress站点网址安徽网站建设详细策划
  • 个人制作的网站开通微信公众号要收费吗
  • h5网站开发培训哪里好中国安能建设总公司网站
  • 网站开发就业前景怎么样网站开发中的开版什么意思
  • 做网站造假html网页案例
  • 苏州姑苏区网站建设企业站网站建设制作平台
  • 广东工程建设咨询有限公司网站校园设计网站
  • 唐山网站制作企业什么叫定制网站
  • 知识付费网站制作o2o商城网站建设方案
  • 网站有哪些内容网站开发美学 2.0
  • 什么是网站名网站搜索优化方案
  • 在线做ppt的网站有哪些问题跳蚤市场网站开发背景
  • 普通网站和营销型网站的区别是什么网站建设自学 优帮云
  • iis虚拟网站兰州网络推广排行