N*N矩阵的旋转 不开辟新空间
/*
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矩阵的旋转 不开辟新空间的更多相关文章
- [golang]图片按中心旋转后,新图的左顶点位置的偏移量
1 前言 图片按中心旋转后,新图的左顶点位置的偏移量 2 代码 func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y floa ...
- linq 查询的结果会开辟新的内存吗?
一:背景 1. 讲故事 昨天群里有位朋友问:linq 查询的结果会开辟新的内存吗?如果开了,那是对原序列集里面元素的深拷贝还是仅仅拷贝其引用? 其实这个问题我觉得问的挺好,很多初学 C# 的朋友或多或 ...
- 嵌入式-C语言基础:malloc动态开辟内存空间
#include<stdio.h> #include<stdlib.h> int main() { // char *p;//定义一个野指针:没有让它指向一个变量的地址 // ...
- 【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, ...
- 【Isabella Message】 【SPOJ - ISAB】【模拟】【矩阵的旋转】
思路 题目链接 题意:题目中先给了一个N阶矩阵样子的字符,后给了一个mask,然后又给出你应该认识的一些单词,最后是让你输出最终字典序最小的一句话. 思路:根据题目要求模拟即可.这里会用到string ...
- LeetCode48, 如何让矩阵原地旋转90度
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第29篇,我们来看一道简单的矩阵旋转问题. 题意 题目的要求很简单,给定一个二维方形矩阵,要求返回矩阵旋转90度之后的 ...
- 54. Spiral Matrix(矩阵,旋转打印)
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算
1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...
- 【Android】Android内存溢出问题---用自行开辟的空间进行对内存管理
public static Bitmap readBitmap(String path) { BitmapFactory.Options options = new BitmapFactory.Opt ...
随机推荐
- [PTA] 数据结构与算法题目集 6-11 先序输出叶结点
//函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符. void PreorderPrintLeaves(BinTree BT) { ...
- 如何挑选node docker镜像
如何挑选node docker镜像 在使用Jenkins构建前端项目的时候遇到一点问题: node的版本问题. 由于可能编译的项目历史不同,所依赖的node版本也各有千秋,直接把所有项目都升级到最新的 ...
- lnmp php使用命令行去备份数据库
<?php //备份数据库we8和foshan $time = date("Y-m-d",time()); $backtime = date("Y-m-d" ...
- springboot整合mybatis时无法读取xml文件解决方法(必读)
转 http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...
- [POJ2823] Sliding Window 「单调队列」
我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{ a(i-k+1),a(i-k+2),..., a(i) },i ...
- 用大白话告诉你 :Java 后端到底是在做什么?
阅读本文大概需要 6 分钟. 作者:黄小斜 新手程序员通常会走入一个误区,就是认为学习了一门语言,就可以称为是某某语言工程师了.但事实上真的是这样吗?其实并非如此. 今天我们就来聊一聊,Java 开发 ...
- Mac OS 安装mysqlclient 遇到的坑~
最近在学习Python, 因为Django连接mysql 需要安装mysqlclient, 但Mac安装遇到各种问题,这里记录一下,避免以后再踩坑. 1. 正常情况下,安装mysqlclient ...
- SpringMVC学习笔记之---简单入门
SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...
- Office2019 VOL版本 自定义安装组件
众所周知,Office VOL版本可以连接KMS服务器激活,但是office2019没有镜像可以下载,所以只能依靠Office Deployment Tool来进行操作.注:Office2019 Re ...
- Python中input()的使用方法
input()以字符串的方式获取用户输入: >>> x = input() 4.5 >>> type(x) <class 'str'> >> ...