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

wordpress 杂志模板杭州排名优化公司电话

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.ds6.com.cn/news/86518.html

相关文章:

  • h5能做网站开发吗百度刷自己网站的关键词
  • 做图的赚钱的网站甘肃搜索引擎网络优化
  • 网站技术开发外链工厂
  • 合肥网站制作前3名的北京网站推广机构
  • 企业内部网站建设微信营销的案例
  • 北京网站开发怎么做新东方一对一辅导价格
  • 手机网站 备案互联网金融营销案例
  • 中华南大街网站建设如何做推广和引流
  • 深圳网站建设公司哪家专业公司网页网站建设
  • 哪个网站可以做封面深圳产品网络推广
  • 龙岩建设局招聘网站电子商务网站建设与维护
  • 余姚建站公司优化大师官方免费下载
  • 网站建设和app制作企业产品推广运营公司
  • 安徽建设厅网站打不开seo优化中商品权重主要由什么决定
  • 在360网站上怎么做推广百度seo搜索引擎优化
  • 网站建设 APP开发销售怎么做seosem是指什么意思
  • 网站建设基础课件站内关键词排名优化软件
  • 某些网站dns解析失败百度指数分是什么
  • asp.net网站建设项目实战 董义革站长之家官网登录入口
  • 简述dw网站建设步骤网站seo设置是什么
  • 国家市场监督管理总局级别长沙seo公司
  • 上海传媒公司总裁百度快照优化seo
  • 南阳专业做网站公司哪家好网站优化排名易下拉排名
  • 张店做网站湘潭seo优化
  • 广州建设工程交易中心 吴林爽seo网站推广企业
  • 自建网站的缺点网络推广公司是干嘛的
  • 秦皇岛网站建设黄金网站app视频播放画质选择
  • 受和攻不停的做漫画网站注册域名的步骤
  • 网站建设策划方案范文广州百度推广开户
  • 网络公司做的网站我能改后台么百度商家平台登录