博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
旋转矩阵的算法
阅读量:7099 次
发布时间:2019-06-28

本文共 1333 字,大约阅读时间需要 4 分钟。

旋转矩阵是计算机图形学里面的基础内容。之前我还写过一篇

操作的步骤可以分为两部,一是沿正对角线对称,二是沿水平对称轴对称

原图

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
==》第一步之后:

1 5 9 13

2 6 10 14
3 7 11 15
4 8 12 16

==》第二步之后:

4 8 12 16

3 7 11 15
2 6 10 14
1 5 9 13

算法实现

void swap(int& a, int&b){    int temp = a;    a = b;    b = temp;}void rotate(int **a, int n){    //n*n的矩阵    //以主对角线为交换对称元素    for (int row = 0; row < n-1; row++)    {        for (int col = row+1; col < n; col++)        {            swap(a[row][col], a[col][row]);        }    }    for (int col = 0; col < n; col++)    {        for (int row = 0; row < n/2; row++)        {            swap(a[row][col], a[n - 1-row][col]);        }    }}

实例测试

#include
#include
#include
void rotate(int** a, int n);int main(){ int **a=(int**)malloc(sizeof(int*)*4); int num = 1; for (int i = 0; i < 4; i++) { a[i] = (int*)malloc(sizeof(int)* 4); for (int j = 0; j < 4; j++) a[i][j] = num++; } rotate(a, 4); for (int i = 0; i < 4; i++) { printf("\n"); for (int j = 0; j < 4; j++) printf("%d ", a[i][j]); } system("pause"); return 0;}

多余的话

有心人可以注意到一点,其实如果把函数rotate(int** a,int n)中的a类型修改为a[][4]的话会简单不少。这样在测试用例中传入a[4][4]即可,但是这样又限制了n。

版权声明:本文为博主原创文章,转载请标明出处。

转载于:https://www.cnblogs.com/fridge/p/4861919.html

你可能感兴趣的文章
SpringCloud(一)浅谈SpringCloud
查看>>
spring getbean 方法分析(很实用!)
查看>>
你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
查看>>
Asp.net 动态为TreeView创建结点
查看>>
dedecms 系统的 data/rssmap.html不存在!更新了也没有。。。
查看>>
博文共赏:Node.js静态文件服务器实战
查看>>
CS安装卸载测试总结(转)
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)
查看>>
iphone开发之轻松搞定原生socket 编程,阻塞与非阻塞,收发自如
查看>>
ColdFusion select option 用法,看看哪种适合你的
查看>>
Amazium - 响应式 CSS 框架 - 开源中国
查看>>
使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
查看>>
iis7 发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容...
查看>>
PHP通过Thrift操作Hbase
查看>>
Sql Server导入Access数据库报不可识别的数据库格式 Microsoft JET Database Engine
查看>>
存储设备形成的层次结构
查看>>
http://knockoutjs.com/工作杂记
查看>>
Http协议中的Header与Body
查看>>
窗口大小改变绑定resize事件
查看>>
python数据结构之二叉树遍历的实现
查看>>