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

杭州的设计网站用ps做网站的网页框架

杭州的设计网站,用ps做网站的网页框架,陵水网站建设哪家好,wordpress可以做下载站题目描述 存在一个m*n的二维数组,其成员取值范围为0,1,2。 其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。 而值为2的元素,免疫同化。 将数组所有成员随机初始化为0或2&#xf…

题目描述

存在一个m*n的二维数组,其成员取值范围为0,1,2。

其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。

而值为2的元素,免疫同化。

将数组所有成员随机初始化为0或2,再将矩阵的[0, 0]元素修改成1,在经过足够长的时间后求矩阵中有多少个元素是0或2(即0和2数量之和)。

输入描述
输入的前两个数字是矩阵大小。后面是数字矩阵内容。

输出描述
返回矩阵中非1的元素个数。

用例

输入4 4
0 0 0 0
0 2 2 2
0 2 0 0
0 2 0 0
输出9
说明

输入数字前两个数字是矩阵大小。后面的数字是矩阵内容。

起始位置(0,0)被修改为1后,最终只能同化矩阵为:

1 1 1 1

1 2 2 2

1 2 0 0

1 2 0 0

所以矩阵中非1的元素个数为9

解题思路:广度优先搜索(BFS)模拟感染过程

这道题的核心是模拟具有传染特性的1元素在矩阵中的扩散过程。我们需要找出所有能够被感染的0元素,并最终统计无法被感染的0和免疫的2的数量总和。


一、核心思路图解

1. 问题本质

矩阵中存在三种数值:

  • 0:可以被同化的普通元素
  • 1:具有同化能力的源头
  • 2:无法被同化的元素

要求计算在无限时间后,未被感染的0和所有2的总数

2. 关键观察
  • 感染的传播规律:1元素每秒钟向上下左右四个方向扩散,但只能感染相邻的0元素
  • 传播阻断条件:遇到2时会完全阻断传播路径
  • 最终状态等价性:无限时间后的状态等价于通过BFS遍历所有可达的0元素
3. 算法选择

使用广度优先搜索(BFS) 的原因:

  • 天然符合感染扩散的层次性(每层对应1秒的扩散范围)
  • 能够高效标记所有可达的0元素
  • 时间复杂度O(mn),空间复杂度O(mn)

二、实现步骤详解

步骤一:初始设置
  1. 将起点(0,0)设为1(题目要求)
  2. 初始化队列,将起点坐标加入队列
  3. 定义四个方向的位移数组(上下左右)
步骤二:BFS扩散过程
from collections import dequequeue = deque()
queue.append((0, 0))  # 初始感染源directions = [(-1,0),(1,0),(0,-1),(0,1)]  # 移动方向while queue:x, y = queue.popleft()for dx, dy in directions:nx, ny = x+dx, y+dy# 检查边界和是否可感染if 0<=nx<rows and 0<=ny<cols and grid[nx][ny]==0:grid[nx][ny] = 1       # 标记为已感染queue.append((nx, ny)) # 加入新感染源
步骤三:统计结果

遍历整个矩阵,计数所有非1元素:

count = 0
for row in grid:for num in row:if num != 1:count += 1
print(count)

三、代码实现与解析

from collections import deque# 读取输入
m, n = map(int, input().split())
grid = []
for _ in range(m):grid.append(list(map(int, input().split())))# 设置初始感染源
grid[0][0] = 1# BFS初始化
queue = deque([(0, 0)])
directions = [(-1,0),(1,0),(0,-1),(0,1)]# 扩散过程
while queue:x, y = queue.popleft()for dx, dy in directions:nx, ny = x+dx, y+dyif 0<=nx<m and 0<=ny<n and grid[nx][ny]==0:grid[nx][ny] = 1queue.append((nx, ny))# 统计未被感染的元素
result = 0
for row in grid:result += sum(1 for num in row if num != 1)
print(result)

四、复杂度与优化分析

时间复杂度
  • BFS过程:O(mn),每个节点最多入队一次
  • 最终统计:O(mn)
  • 总复杂度:O(mn),在1000x1000的矩阵中也能高效运行
空间复杂度
  • 队列最大长度:O(mn)(极端情况全为0)
  • 矩阵存储:O(mn)
  • 总空间:O(mn)

五、典型案例验证

以题目示例说明:

输入矩阵:
0 0 0 0
0 2 2 2 
0 2 0 0 
0 2 0 0 处理后矩阵:
1 1 1 1
1 2 2 2 
1 2 0 0 
1 2 0 0 未被感染元素分布:
第二行:3个2
第三行:2个0 + 1个2
第四行:2个0 + 1个2
总和:3+3+3=9

六、边界条件处理

  1. 全0矩阵:所有元素都会被感染,结果为0
  2. 起点被2包围:仅起点变为1,其他保持原样
  3. 极长传播路径:BFS仍能正确处理扩散顺序
  4. 超大矩阵:Python的deque能高效处理队列操作

通过BFS模拟感染过程,我们能够准确高效地计算结果。关键点在于理解感染传播的特性,并选择合适的搜索算法进行模拟。该方法在时空复杂度上都能很好地应对题目要求的所有数据范围。


文章转载自:

http://oYOgPuXz.bzqnp.cn
http://CDkG2fas.bzqnp.cn
http://fK54cZB8.bzqnp.cn
http://tp3Tp2zI.bzqnp.cn
http://hAi81lVn.bzqnp.cn
http://Qawo31En.bzqnp.cn
http://rHKjhyTI.bzqnp.cn
http://WU6rE2dq.bzqnp.cn
http://u664hjfc.bzqnp.cn
http://qpjq2IFz.bzqnp.cn
http://nDS0OMtw.bzqnp.cn
http://FcZAz5Vm.bzqnp.cn
http://LZAhs96d.bzqnp.cn
http://XtgszcEr.bzqnp.cn
http://NtNIyiMF.bzqnp.cn
http://zcpLWiCt.bzqnp.cn
http://54LxcI9z.bzqnp.cn
http://lyRc9pko.bzqnp.cn
http://WwHKwRtq.bzqnp.cn
http://rGaLiGRP.bzqnp.cn
http://Veim4a6T.bzqnp.cn
http://Jfxlt4JP.bzqnp.cn
http://tQj1isXQ.bzqnp.cn
http://Ngxzqeob.bzqnp.cn
http://O8ZuFbBb.bzqnp.cn
http://nLDo7gTO.bzqnp.cn
http://8vsKsdjw.bzqnp.cn
http://MsZYneWs.bzqnp.cn
http://08oCd6pK.bzqnp.cn
http://fWC35S0d.bzqnp.cn
http://www.dtcms.com/wzjs/669968.html

相关文章:

  • 免费的ai写作网站设计欣赏心得体会
  • 自己做头像网站品牌设计得公司
  • 网站建设与管理 中职wordpress批量修改文章分类
  • 做电脑网站步骤泰安网红餐厅
  • 做网站用什么虚拟主机网站搜索功能实现
  • 网站的基本组成部分有哪些织梦wap网站模版
  • 惠州seo代理计费永康网站优化公司
  • 酒店如何做网站北京南昌网站建设
  • 网站 php连接mysql 代码昆明seo网站建设
  • 郑州北环网站建设培训中小企业服务平台
  • 佛山seo网站优化中国建设银行内部网站
  • 比较好看的网站设计阳泉哪里做网站
  • 加强三农网站建设的意义方法网站目录
  • 网站结构分析动漫制作专业课程
  • 讨债公司 做网站wordpress数据库配置页面
  • 自己网站上放个域名查询建网站新科网站建设
  • 福州网站建设找嘉艺网络建设银行湖北省分行 网站
  • 网站建设需要注意哪些细节低价自适应网站建设优化建站
  • 用jsp做的可运行的网站广告线上推广方式
  • 地方门户网站发展趋势怎样做一个网站首页
  • 深圳企业网站备案图片网址生成器
  • 秦皇岛市建设局网站营销方案100例免费
  • 西数网站助手适合个人做的跨境电商平台
  • 简述网站建设的五类成员网上推广产品哪个平台效果好
  • 网站备案查询api网站产品页面什么时候做
  • 免费建网站的作用网站开发原始数据
  • 余江网站建设videojs wordpress
  • 网站内部优化的方法商业授权书
  • excel网站链接怎么做国际热点新闻
  • 优秀的图片设计网站推荐福田欧辉是国企吗