C++ 方阵原地旋转90度
不额外申请内存(另外的一个二维数组空间),将一个方阵(二维数组)原地旋转90度,主要的思路是,由外向内,一圈圈的进行旋转(就是依次进行交换),如下图所示,当这些圈圈都交换完了之后,就完成了原地旋转了。

代码如下:
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define MIN 0
#define MAX 9 void rotate(int **matrix, int size);
void new_matrix(int ** matrix, int size);
void delete_matrix(int ** matrix, int size);
void rand_matrix(int ** matrix, int size);
void print_matrix(int ** matrix, int size);
int main() { int size = ;
int **matrix = new int *[size];
new_matrix(matrix, size);
srand((unsigned)(time()));
rand_matrix(matrix, size);
print_matrix(matrix, size);
cout << "***************" << endl;
rotate(matrix, size);
print_matrix(matrix, size);
delete_matrix(matrix, size);
delete []matrix;
getchar();
getchar();
return ;
}
void rotate(int **matrix, int size)
{
int temp;
for (int i = ; i < size / ; i++)
{
int first = i;
int last = size - - i;
for (int j = first; j < last; j++)
{
int offset = size - - j;
int temp = matrix[j][i];
matrix[j][i] = matrix[last][j];
matrix[last][j] = matrix[offset][last];
matrix[offset][last] = matrix[i][offset];
matrix[i][offset] = temp;
}
}
}
void new_matrix(int ** matrix, int size)
{
for (int i = ; i < size; i ++)
{
matrix[i] = new int[size];
}
}
void delete_matrix(int ** matrix, int size)
{
for (int i = ; i < size; i ++)
{
delete[] matrix[i];
}
}
void rand_matrix(int ** matrix, int size)
{
for (int i = ; i < size; i ++)
{
for (int j = ; j < size; j ++)
{
matrix[i][j] = MIN + rand() % (MAX - MIN + );
} }
}
void print_matrix(int ** matrix, int size)
{
for (int i = ; i < size; i ++)
{
for (int j = ; j < size; j ++)
{
cout << " " << matrix[i][j];
}
cout << endl;
}
}
代码中还涉及到了通过new与delete分配与释放一个二维数组,也是面试中的一个问题。
C++ 方阵原地旋转90度的更多相关文章
- LeetCode48, 如何让矩阵原地旋转90度
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第29篇,我们来看一道简单的矩阵旋转问题. 题意 题目的要求很简单,给定一个二维方形矩阵,要求返回矩阵旋转90度之后的 ...
- 不占用额外内存空间能否做到 将图像旋转90度 N × N矩阵表示的图像,其中每个像素的大小为4字节
给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度. 不占用额外内存空间能否做到? 示例 1: 给定 matrix = [ [1,2,3], [4,5,6] ...
- 关于android中调用系统拍照,返回图片是旋转90度
转载博客:http://blog.csdn.net/walker02/article/details/8211628 项目开发中遇到的一个问题,对于三星手机在做手机照片选择时出现图片显示不正常,研究后 ...
- 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...
- 利用exif.js解决ios手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- 解决ios手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- PyOpenCV图像逆时针旋转90度
warpAffine方法效果很搓,留下大片黑色区域. 使用flip和transpose可以实现逆时针旋转90度.先flip或先transpose均可. #coding:utf-8 import cv2 ...
- MTK 屏幕旋转90度
http://blog.csdn.net/ouo555/article/details/44806837 1.屏幕显示顺时针旋转90度 lk 横屏logo,顺时针旋转90度显示修改bootable/b ...
随机推荐
- Python匿名函数——lambda表达式
如果要定义的函数很简单,一个return语句就能搞定,可以使用lambda表达式来定义, lambda表达式的语法如下: lambda parameters: expression lambda表达式 ...
- Zookeeper+Kafka集群部署
Zookeeper+Kafka集群部署 主机规划: 10.200.3.85 Kafka+ZooKeeper 10.200.3.86 Kafka+ZooKeeper 10.200.3.87 Kaf ...
- Ubuntu16.04搭建Postfix作为SMTP服务器
一.DNS配置 类型 名称 值 TTL A mail 128.199.254.32 1小时 MX @ mail.example.com(优先:10) 1小时 TXT @ v=spf ...
- intelliJ idea快捷方式
Ctrl+Shift+N,可以快速打开文件 Ctrl+Alt+L,格式化代码 Ctrl+R,替换文本Ctrl+F,查找文本 Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件 Ctrl+ ...
- react实现多行文本超出加省略号
http://www.css88.com/archives/5206 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; ...
- 卡通渲染Shader
http://www.opengpu.org/forum.php?mod=viewthread&tid=17071http://www.opengpu.org/bbs/forum.php?mo ...
- git 误删分支恢复方法
在使用Git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...
- Android studio启动后卡在refreshing gradle project
这个问题几乎每个刚使用Android studio的同学都会碰到过,网上有各式各样的方法,有的说使用本地gradle,我试过多次,每次启动Android studio时还是会检查更新,所以根本上解决的 ...
- customer.java
package banking; public class Customer { private String firstName; private String lastName; private ...
- 还不错的MUI技术文档
https://blog.csdn.net/xin724/article/details/81939176