矩阵逆时针旋转90度,空间复杂度O(1)

将一个矩阵逆时针旋转90度,首先可以沿左上角-右下角斜对角线,进行上下交换数据,然后上下数据交换即可。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 //矩阵逆时针旋转90度
 4 int main()
 5 {
 6     int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
 7     int b[3][3];
 8     int i;
 9     int j;
10     int temp;
11     printf("原始矩阵\n");
12     for(i=0;i<3;i++){
13       for(j=0;j<3;j++){
14           printf("%d ",a[i][j]);
15       }
16         printf("\n");
17      }
18
19     printf("第一次转换\n");
20
21     for(i=0;i<3;i++){
22         for(j=i;j<3;j++){
23            temp=a[i][j];
24            a[i][j]=a[j][i];
25            a[j][i]=temp;
26         }
27     }
28      for(i=0;i<3;i++){
29         for(j=0;j<3;j++){
30          printf("%d ",a[i][j]);
31         }
32         printf("\n");
33      }
34      printf("第二次转换\n");
35      for(i=0;i<3/2;i++){
36         for(j=0;j<3;j++){
37           temp=a[i][j];
38           a[i][j]=a[3-i-1][j];
39           a[3-i-1][j]=temp;
40         }
41      }
42
43       for(i=0;i<3;i++){
44         for(j=0;j<3;j++){
45          printf("%d ",a[i][j]);
46         }
47         printf("\n");
48      }
49
50     return 0;
51 }
时间: 2024-10-16 11:33:38

矩阵逆时针旋转90度,空间复杂度O(1)的相关文章

将一个4X4的数组进行逆时针旋转90度后输出,要求原数组数据随机输入

//将一个4X4的数组进行逆时针旋转90度后输出,要求原数组数据随机输入 #include<stdio.h> int main() { int a[4][4],b[4][4],i,j;//a存放原是数组数据,b存放旋转后的数组数据 printf("please input 16 number:"); for(i=0;i<4;i++) for(j=0;j<4;j++) { scanf("%d",&a[i][j]); b[3-j][i]=

逆时针旋转90度输出二叉树(数据结构试验二)

逆时针旋转90度打印二叉树是一种特殊的中序遍历算法 图解逆时针旋转90度操作 实现也特别简单,跟中序遍历算法差不多,在输出节点值前,用个特殊标记记录层数并输出适当的空格就可以了. 代码: void prtbtree(BiTNode *p,int cur)//逆时针旋转90度输出二叉树 { if(p) { prtbtree(p->rch,cur+1); for(int i=0;i<=cur;i++) printf(" "); printf("%3c",p-

使用360浏览器访问字体逆时针旋转90度的问题

我做的是asp.net类型的网站,在制作网站的时候360浏览器出现的问题我说下: 在网站中我在css中设置的字体是“@仿宋”的字体,结果出现如下问题 后来我将字体设置为:微软雅黑,结果出现了下面的情况 但是至今我没找到为什么会出现这样的问题,我个人猜可能是仿宋前面加了@符号 的问题,但是为什么会出现这样的问题,我现在还没弄清楚,希望会的人可以给我留言,谢谢大家了!

CC150:将一个矩阵旋转90度

一张图像表示成n X n的矩阵,写一个函数把图像旋转90度.不开辟额外的存储空间 我们假设要将图像逆时针旋转90度.原图如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 逆时针旋转90度后的图应该是: 4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13 我们要如何原地进行操作以达到上面的效果呢?可以分两步 第一步交换主对角线两侧的对称元素, 第二步交换第i行和第n-1-i行,即得到结果. 看图示: 原图:           第一

利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 利用exif.js读取照片的拍摄信息,详见  http://code.ciaoca.com/javascript/exif-js/ 这里主要用到Orientation属性. Orientation属性说明如下: 旋转角度 参数 0° 1 顺时针90° 6 逆时针9

移动端上传照片 预览+draw on Canvas demo(解决iOS等设备照片旋转90度的bug)

背景: 本人的一个移动端H5项目,需求如下: 手机相册选取或拍摄照片后在页面上预览 然后绘制在canvas画布上. 这里,我们先看一个demo(http://jsfiddle.net/q3011893/83qfqpk8/embedded/) 操作步骤: 1.点击选择文件,拍摄一张照片,此时"预览:"文字下会显示你刚才拍摄的照片: 2.再点击"draw on Canvas",该按钮下的画布会绘制你刚才拍摄的照片. 正常的结果: 正文: 让input file支持拍照+

解决ios手机上传竖拍照片旋转90度的问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 这里主要利用exif.js读取照片的拍摄信息. Exif.js 提供了 JavaScript 读取图像的原始数据的功能扩展,例如:拍照方向.相机设备型号.拍摄时间.ISO 感光度.GPS 地理位置等数据. EXIF 数据主要来自拍摄的照片,多用于移动端开发,PC

ios系统 竖屏拍照 canvas处理后 图片旋转(利用exif.js解决ios手机上传竖拍照片旋转90度问题)

转:https://www.cnblogs.com/lovelgx/articles/8656615.html ---恢复内容开始--- 问题:html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 解决方法:利用exif.js解决ios手机上传竖拍照片旋转90度问题 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 利用exif.js读取照片的拍摄信息,详见 htt

O(1)空间复杂度实现n*n矩阵旋转90度

O(1)空间复杂度实现n*n矩阵旋转90度, #include <iostream> using namespace std; #define ARRAY_SIZE 5 void print_two_array (int a[][ARRAY_SIZE]) { cout << endl;    for (int i=0; i<ARRAY_SIZE; i++) { for (int j=0; j<ARRAY_SIZE; j++) {    cout << a[i