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 ...
随机推荐
- Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域
上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能 ...
- Y服务-你真的懂 Yaml 吗
目录 一.什么是 Yaml 二.Yaml 的语法 三.操作 Yaml A. 引入框架 B. 代码片段 C. 完整案例 参考文档 在Java 的世界里,配置的事情都交给了 Properties,要追溯起 ...
- HTML 去调table表单里面td之间的间距
首先为大家展示一下最原始的代码和效果.直接在table中用td划分的表格会默认隐藏边框. 接下来我们用css来增加样式,为table增加边框. table { border: 1px solid # ...
- 【iOS】Masonry 自动布局 MASViewConstraint.m:207 错误
问题详情: Assertion failure 报错原因: make.right.equalTo([_imageView superview]).right.with.offset(-); make. ...
- 整理github总结
之前记述过两篇关于git命令的随笔,那时候对git的理解还不太深(虽然现在理解的也不是很多...菜哭了),只会用那些命令,并没有形成自己的知识,今天下载完Git之后,规整了一下自己的github,在吃 ...
- java8中用流收集数据
用流收集数据 汇总 long howManyDishes = menu.stream().collect(Collectors.counting()); int totalCalories = men ...
- golang const 内itoa 用法详解及优劣分析
首先itoa 是什么 const 内的 iota是golang语言的常量计数器,只能在常量的表达式中使用,,即const内. iota在const关键字出现时将被重置为0(const内部的第一行之前) ...
- git开发流程
典型的工作流程和做法是,由于你没有远程仓库的权限,你先在github通过fork,复制自己的一份远程仓库,然后通过clone你自己这个远程副本到本地,进行修改,修改后push到自己的githu远程副本 ...
- WinForm开发中通用附件管理控件设计开发参考
1.引言 在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块.我们日常记录会伴随着有图片.文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每 ...
- Unity通过NTP获取网络时间
最初通过qq时间服务器获得时间,经常出现有网络也获取失败的情况. 后面寻找解决办法,查找资料终于发现通过ntp时间服务器获取网络时间的方法. 首先游戏开始获得初始化网络时间,通常只获取一次,其他时 ...