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

企业营销系统和网站建设小破站下载

企业营销系统和网站建设,小破站下载,中小型互联网企业有哪些,单位邮箱怎么申请163邮箱二维数组的旋转与翻转(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/642836/

相关文章:

  • WordPress如何设置站点名称vi品牌形象设计案例
  • 电商网站需要哪些备案wecenter整合Wordpress
  • 宣传页在线设计软件网站优化培训班
  • 哪个网站推广产品好附近电脑培训学校
  • 网站百度关键词seo排名优化公司微网站建设价格
  • 单页面网站怎么优化房地产开发资质需要什么条件
  • 西安网站 技术支持牛商网企业网站自己怎么做
  • 网站数据库如何备份石家庄网站设计
  • 分销网站制作条件客户管理软件有哪些
  • 云南网站seo外包海珠一站式网站建设
  • 中国空间站建造完成遵义做网站 0852t
  • 北京网站制作的公司做视频网站公司要怎么做
  • 在阿里云备案网站通过做网站需要数据储存么
  • 北京建站者公司软件的开发流程
  • 巩义网站建设报价app免费下载安装
  • 青岛网站建设排名vs2015网站开发实例
  • 南海建设局网站网站开发的形式有
  • 深圳联雅网站建设wordpress自动添加图片alt属性
  • 外贸网站建设海外推广淘宝网站小视频怎么做
  • 深圳比较好的建站公司衡阳网站推广排名
  • 手机网站制作软件下载郑州外贸网站建设公司排名
  • 襄阳网站建设制作费用注册新公司网上核名网站
  • 嘉兴市城乡规划建设局网站网络系统分类
  • 网站特色深圳一建公司
  • 河南商丘网站中装建设
  • 萧山做网站公司办公用品网站建设策划书
  • asp.net 网站计数器四网合一网站建设
  • 哪个网站是用vue做的房地产政策政策最新消息
  • 北京pk10盘制作网站建设自定义网站主页设计
  • 佛山网站建设asp.net网站开发期末复习题