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

长安网站建设网络推广工业信息化部网站备案

长安网站建设网络推广,工业信息化部网站备案,wordpress 注册 验证码,摄影师网站建设二维数组的旋转与翻转(C) 引言 在计算机科学中,二维数组是一种常见的数据结构,广泛应用于图像处理、数据挖掘、机器学习等多个领域。二维数组的旋转与翻转是处理二维数据时经常需要用到的操作。本文将详细介绍二维数组的旋转与翻…

二维数组的旋转与翻转(C++)

引言

在计算机科学中,二维数组是一种常见的数据结构,广泛应用于图像处理、数据挖掘、机器学习等多个领域。二维数组的旋转与翻转是处理二维数据时经常需要用到的操作。本文将详细介绍二维数组的旋转与翻转的原理及其在C++中的实现方法。

二维数组旋转

旋转原理

二维数组的旋转实质上是对数组元素坐标的变换。对于一个 n×n 的二维数组,我们可以将其视为一个正方形网格。旋转操作可以分为顺时针旋转90度、180度、270度。

顺时针旋转90度

  • 坐标变换: 假设原始数组中的元素位于 (i, j) 位置,旋转后的新位置将是 (j, n-1-i)

  • 步骤:

    1. 首先,将数组沿主对角线(从左上角到右下角的对角线)进行对称变换。

    2. 然后,对变换后的数组每一行进行水平翻转。

void Rotate90(vector<vector<int>>& matrix) {int n = matrix.size();// Step 1: Transpose the matrix along the main diagonal.for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {swap(matrix[i][j], matrix[j][i]);}}// Step 2: Reverse each row.for (int i = 0; i < n; ++i) {reverse(matrix[i].begin(), matrix[i].end());}
}

顺时针旋转180度

  • 坐标变换: 原始位置 (i, j) 旋转后的新位置将是 (n-1-i, n-1-j)

  • 步骤:

    1. 直接对数组进行两次90度旋转即可实现180度旋转。

void Rotate180(vector<vector<int>>& matrix) {Rotate90(matrix);Rotate90(matrix);
}

顺时针旋转270度

  • 坐标变换: 原始位置 (i, j) 旋转后的新位置将是 (n-1-j, i)

  • 步骤:

    1. 直接对数组进行一次90度旋转即可实现270度旋转。

void Rotate270(vector<vector<int>>& matrix) {Rotate90(matrix);
}

二维数组翻转

翻转原理

二维数组的翻转主要包括水平翻转、垂直翻转以及沿对角线翻转。

水平翻转

  • 坐标变换: 原始位置 (i, j) 翻转后的新位置将是 (i, n-1-j)

  • 步骤:

    1. 对数组的每一行进行水平翻转。

void FlipHorizontal(vector<vector<int>>& matrix) {int n = matrix.size();for (int i = 0; i < n; ++i) {reverse(matrix[i].begin(), matrix[i].end());}
}

垂直翻转

  • 坐标变换: 原始位置 (i, j) 翻转后的新位置将是 (n-1-i, j)

  • 步骤:

    1. 对数组的整体进行垂直翻转。

void FlipVertical(vector<vector<int>>& matrix) {int n = matrix.size();for (int i = 0; i < n / 2; ++i) {for (int j = 0; j < n; ++j) {swap(matrix[i][j], matrix[n - 1 - i][j]);}}
}

沿对角线翻转

  • 坐标变换: 原始位置 (i, j) 翻转后的新位置将是 (j, i)

  • 步骤:

    1. 对数组进行转置。

void FlipDiagonal(vector<vector<int>>& matrix) {int n = matrix.size();for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {swap(matrix[i][j], matrix[j][i]);}}
}

总结

通过对二维数组进行旋转和翻转的操作,我们可以更加灵活地处理图像和其他二维数据。在实际应用中,这些操作往往需要结合具体的业务场景来进行优化,以提高效率和减少资源消耗。希望本文的内容能够帮助大家更好地理解和掌握二维数组的旋转与翻转技术。

http://www.yayakq.cn/news/189586/

相关文章:

  • 网站运营 流程360官网首页入口
  • 注册一个网站英迈寰球网站建设
  • 北京网站开发浩森宇特网站免费优化工具
  • p2p网站建设源码网站首页图片做多大
  • 无锡新区企业网站推广wordpress搬家
  • 一元夺宝网站怎么做天津通用网站建设收费
  • 网站集约建设原因榆林 网站建设
  • 蓬莱做网站那家好西部虚拟主机网站后台不能访问
  • dw网站根目录怎么做学做会计账的网站
  • 网站维护外包方案长沙网站设计
  • 富民网站建设微信发布wordpress
  • 余姚厂家高端网站设计破解织梦做的网站
  • 网站标题 关键字怎么设置代码犀牛云网站建设费用
  • 手机建设网站自适应的好处中文在线中文资源
  • 用php做网站和go做网站长沙做一个网站要多少钱
  • 湖南智能网站建设哪家好电子商务网站建设报告怎么写
  • 网站品牌词如何优化网站开发 项目职责
  • 互联网 网站设计sem公司
  • 医院诊所网站源码京东联盟建网站
  • 注册网站域名需要什么易物网网站建设管理
  • 大气企业网站源码上海企业信息
  • 学院网站建设 需求分析找网络推广策畿
  • 查网站服务器ip 被k公司建网站有何意义
  • 淘宝网站建设杭州fi网页动图制作
  • 网站的维护费用达内教育口碑怎么样
  • 触摸屏网站开发企业vi设计策划书
  • 网站优化与推广wordpress 视频压缩
  • 政务网站建设信息东莞做网站哪家最好
  • centos7做网站设计师导航网
  • 网站编辑的职业特点有哪些小程序商城哪家好些