/*

N*N矩阵的旋转

不开辟新空间

programmer:qpz

time:2014-11-09

*/

#include <iostream>

using namespace std;

//#define MAX 3

const int MAX=3;

class cou{

private:

int x;

int y;

char num[MAX][MAX];

public:

cou(){}

cou(char num[MAX][MAX]);

void Prin(void);

void rotate(void);

};

void Init(char a[MAX][MAX],int n,int m);

int main(void)

{

char arr[MAX][MAX],time;

Init(arr,MAX,MAX);

cou Matrix;

Matrix=cou(arr);

Matrix.Prin();

cout<<"请输入旋转几次:"<<endl;

cin>>time;

time=time%4;

while(time--){

Matrix.rotate();

}

Matrix.Prin();

return 0;

}/*end main*/

void Init(char a[MAX][MAX],int n,int m)

{

int i,j;

cout<<"请输入矩阵3*3:"<<endl;

for(i=0;i<n;i++){

for(j=0;j<m;j++){

cin>>a[i][j];

}/*end for*/

}/*end for*/

}/*end Init*/

cou::cou(char num[MAX][MAX])

{

for(x=0;x<MAX;x++){

for(y=0;y<MAX;y++){

this->num[x][y]=num[x][y];

}/*end for*/

}/*end for*/

}/*end cou()*/

void cou::Prin(void)

{

for(int i=0;i<MAX;i++){

for(int j=0;j<MAX;j++){

cout<<num[i][j];

}/*end for*/

cout<<endl;

}/*end for*/

}/*end Prin()*/

void cou::rotate(void)

{

//cout<<"首先行列互换"<<endl;

for(x=0;x<MAX;x++){

for(y=1+x;y<MAX;y++)

{

num[x][y]=num[x][y]^num[y][x];

num[y][x]=num[x][y]^num[y][x];

num[x][y]=num[x][y]^num[y][x];

} /*end for*/

}/*end for*/

//Prin();

//cout<<endl<<"然后进行左右互换"<<endl;

for(x=0;x<MAX;x++){

for(y=0;y<MAX/2;y++){

num[x][y]=num[x][y]^num[x][MAX-y-1];

num[x][MAX-y-1]=num[x][y]^num[x][MAX-y-1];

num[x][y]=num[x][y]^num[x][MAX-y-1];

} /*end for*/

}/*end for*/

//Prin();

}

N*N矩阵的旋转 不开辟新空间的更多相关文章

  1. [golang]图片按中心旋转后,新图的左顶点位置的偏移量

    1 前言 图片按中心旋转后,新图的左顶点位置的偏移量 2 代码 func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y floa ...

  2. linq 查询的结果会开辟新的内存吗?

    一:背景 1. 讲故事 昨天群里有位朋友问:linq 查询的结果会开辟新的内存吗?如果开了,那是对原序列集里面元素的深拷贝还是仅仅拷贝其引用? 其实这个问题我觉得问的挺好,很多初学 C# 的朋友或多或 ...

  3. 嵌入式-C语言基础:malloc动态开辟内存空间

    #include<stdio.h> #include<stdlib.h> int main() { // char *p;//定义一个野指针:没有让它指向一个变量的地址 // ...

  4. 【Python】将4*4数组旋转90度新数组

    需求:将一个4*4的数组90度旋转生成新的4*4数组 原来的4*4数组:[0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3]90度旋转后的4*4数组:[0, ...

  5. 【Isabella Message】 【SPOJ - ISAB】【模拟】【矩阵的旋转】

    思路 题目链接 题意:题目中先给了一个N阶矩阵样子的字符,后给了一个mask,然后又给出你应该认识的一些单词,最后是让你输出最终字典序最小的一句话. 思路:根据题目要求模拟即可.这里会用到string ...

  6. LeetCode48, 如何让矩阵原地旋转90度

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第29篇,我们来看一道简单的矩阵旋转问题. 题意 题目的要求很简单,给定一个二维方形矩阵,要求返回矩阵旋转90度之后的 ...

  7. 54. Spiral Matrix(矩阵,旋转打印)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  8. [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算

    1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...

  9. 【Android】Android内存溢出问题---用自行开辟的空间进行对内存管理

    public static Bitmap readBitmap(String path) { BitmapFactory.Options options = new BitmapFactory.Opt ...

随机推荐

  1. CUDA编程学习笔记2

    第二章 cuda代码写在.cu/.cuh里面 cuda 7.0 / 9.0开始,NVCC就支持c++11 / 14里面绝大部分的语言特性了. Dim3 __host__ __device__ dim3 ...

  2. Vincent的城堡

    \(\mathcal{Description}\) \(\mathcal{Solution}\) 除去前k部分,后面的是随便怎么选的所以后面的就是\((n-k)^{n-k}\)种方案 前k部分,由于k ...

  3. Sequencial Minimal Optimization-a Fast Alg for Training SVM(译文)

  4. Linux 下实践 VxLAN:虚拟机和 Docker 场景

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,欢迎大家关注,二维码文末可以扫. 在上篇文章 ...

  5. IIS网站服务器性能优化攻略

    Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一 ...

  6. C# 委托(delegate)、泛型委托和Lambda表达式

    目录 # 什么是委托 # 委托声明.实例化和调用 1.声明 2.委托的实例化 3.委托实例的调用 4.委托完整的简单示例 #泛型委托 1.Func委托 2.Action委托 3.Predicate委托 ...

  7. PHP验证身份证格式

    互联网公司对身份证验证的需求越来越多,然而普通的小公司是无法对接公安部门的身份认证系统的.几乎都是在网上买一些大的互联网公司的一些认证服务.即使是便宜一些的认证价格也达到了10万次/万元.也就是一角钱 ...

  8. Downgrade extraction on phones running Android 7/8/9

    Now it's more and more difficult for forensic tools to extract evidence from smartphone running Andr ...

  9. C#连接Oracle数据库字符串(引入DLL)

    需求:从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的SqlClient换成OracleClient调用,结果远没自己想的简单.要么安装Oracle客户端,要么安装PLSQL.网上 ...

  10. Selenium+java - 日期控件的处理

    前言 一般的日期控件都是input标签下弹出来的,设置日期使用selenium中的sendKeys 方法就可以解决. 但是我们也会碰到下面的时间日期控件(这个时候这个文本框是不允许我们输入时间的)如图 ...