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

驻马店做网站推广凡科网站建站教程

驻马店做网站推广,凡科网站建站教程,卖摄影作品的网站,wordpress 随机点击数前缀和矩阵(Prefix Sum Matrix)是一种预处理技术,用于快速计算二维矩阵中任意子矩阵的元素和。其核心思想是通过提前计算并存储每个位置左上角所有元素的和,将子矩阵和的查询时间从暴力计算的 (O(mn)) 优化到 (O(1))。以下是构建前…

前缀和矩阵(Prefix Sum Matrix)是一种预处理技术,用于快速计算二维矩阵中任意子矩阵的元素和。其核心思想是通过提前计算并存储每个位置左上角所有元素的和,将子矩阵和的查询时间从暴力计算的 (O(mn)) 优化到 (O(1))。以下是构建前缀和矩阵的详细步骤和示例:


文章目录

      • 1. 定义原矩阵与前缀和矩阵
      • 2. 构建前缀和矩阵的步骤
        • 步骤 1:初始化前缀和矩阵
        • 步骤 2:递推公式
      • 3. 构建示例
      • 4. 查询子矩阵和
      • 5. 代码实现(C++)
      • 关键点总结

1. 定义原矩阵与前缀和矩阵

  • 原矩阵:一个 m X n 的二维数组 matrix,元素为整数或浮点数。
  • 前缀和矩阵:一个与 matrix 同尺寸的二维数组 prefix,其中 prefix[i][j] 表示从左上角 (0,0)(i,j) 形成的子矩阵所有元素之和。

2. 构建前缀和矩阵的步骤

步骤 1:初始化前缀和矩阵
  • 创建一个与原矩阵大小相同的二维数组 prefix
  • 通常将 prefix 的索引从 (0,0) 开始(与 matrix 对齐)。
步骤 2:递推公式
  • 边界条件

    • i=0j=0 时:

      							prefix[0][0] = matrix[0][0]
      
    • i=0 时(第一行):

      					prefix[0][j] = prefix[0][j-1] + matrix[0][j]
      
    • j=0 时(第一列):

      					prefix[i][0] = prefix[i-1][0] + matrix[i][0]
      
  • 一般情况i>0j>0):

    				prefix[i][j] = matrix[i][j] + prefix[i-1][j] + prefix[i][j-1] - prefix[i-1][j-1]
    

    解释
    当前元素的值 matrix[i][j],加上上方子矩阵的和 prefix[i-1][j],加上左方子矩阵的和 prefix[i][j-1],再减去重复计算的左上角子矩阵 prefix[i-1][j-1]


3. 构建示例

假设原矩阵 matrix 如下:

                                           [1  2  3][4  5  6][7  8  9]

逐行构建前缀和矩阵 prefix

  1. 初始化 prefix[0][0]

    							prefix[0][0] = matrix[0][0] = 1
    
  2. 第一行(i=0

    					prefix[0][1] &= prefix[0][0] + matrix[0][1] = 1 + 2 = 3 prefix[0][2] &= prefix[0][1] + matrix[0][2] = 3 + 3 = 6 
    
  3. 第一列(j=0

    					prefix[1][0] &= prefix[0][0] + matrix[1][0] = 1 + 4 = 5 prefix[2][0] &= prefix[1][0] + matrix[2][0] = 5 + 7 = 12 
    
  4. 一般位置(i>0j>0

    • prefix[1][1]

      								5 + 5 + 3 - 1 = 12
      
    • prefix[1][2]

      								6 + 12 + 6 - 3 = 21
      
    • prefix[2][1]

      								8 + 12 + 12 - 5 = 27
      
    • prefix[2][2]

      								9 + 27 + 21 - 12 = 45
      

最终前缀和矩阵

                                            [1  3   6 ][5  12  21][12 27  45]

4. 查询子矩阵和

构建前缀和矩阵后,计算子矩阵 (x1, y1)(x2, y2) 的和公式为:

	Sum = prefix[x2][y2] - prefix[x1-1][y2] - prefix[x2][y1-1] + prefix[x1-1][y1-1]

示例
计算子矩阵 (1,1)(2,2)(即原矩阵中的 5,6,8,9)的和:

	Sum = 45 - 6 - 12 + 1 = 28

5. 代码实现(C++)

#include <vector>
using namespace std;vector<vector<int>> buildPrefixSum(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();vector<vector<int>> prefix(m, vector<int>(n, 0));// 初始化第一行和第一列prefix[0][0] = matrix[0][0];for (int j = 1; j < n; j++) prefix[0][j] = prefix[0][j-1] + matrix[0][j];for (int i = 1; i < m; i++) prefix[i][0] = prefix[i-1][0] + matrix[i][0];// 填充其他位置for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {prefix[i][j] = matrix[i][j] + prefix[i-1][j] + prefix[i][j-1] - prefix[i-1][j-1];}}return prefix;
}

关键点总结

  • 时间复杂度:构建前缀和矩阵需 (O(mn)),查询子矩阵和仅需 (O(1))。
  • 适用场景:频繁查询子矩阵和的场景(如动态规划、图像处理)。
  • 边界处理:注意索引从 0 开始,避免越界访问。
http://www.dtcms.com/wzjs/197807.html

相关文章:

  • 自己有服务器如何架设网站百度账号免费注册
  • wordpress 在线商城东莞网络优化公司
  • html网页设计颜色代码乌鲁木齐seo
  • 怀柔重庆网站建设烟台网络推广
  • 合肥市人民政府官网12345青岛网站快速排名优化
  • 长治建一个网站大概要多少钱制作网页
  • 企业网站规划原则seo优化推广软件
  • 宁波网站推广方式定制公司新闻近期大事件
  • 企业网站建设的基本原则有哪些?多层次网络营销合法吗
  • 网站上的链接怎么做电子商务网站建设论文
  • 电子商务网站建设评估工具有哪些关键词优化的策略
  • 淘客怎么做网站成都网站seo报价
  • 湛江网站建设制作维护如何注册一个网站
  • 外贸网站域名能用cn做后缀吗seo如何优化
  • 微网站 底部导航菜单沈阳seo关键词排名
  • 西宁网站建设君博首选百度学术官网论文查重免费
  • 新化网站建设昆明百度搜索排名优化
  • 做我的奴隶 good网站厦门百度推广开户
  • 怎么建设一个简单的网站seo优化课程
  • 西藏城乡建设厅网站首页关键词调词平台哪个好
  • 自己做的网站找不到了就业seo好还是sem
  • 网站建设流程详解网站日常维护有哪些
  • 网站建设与管理的实训报告女教师遭网课入侵直播录屏曝光se
  • wordpress 调用参数seo外包公司哪家好
  • 做哪类英文网站赚钱百度全网营销
  • 做视频图片博客网站武汉百度快照优化排名
  • 做网站都用什么工具百度客服电话24小时
  • 网站建设可行性福州短视频seo平台
  • 专业商城网站制作抖音seo排名优化软件
  • 建设银行官方网站诚聘英才新河seo怎么做整站排名