精华内容
下载资源
问答
  • 方阵顺时针旋转90度
    2017-11-02 16:39:21
    /**
     * Created by lxw, liwei4939@126.com on 2017/11/2.
     * 将一方阵顺时针旋转90度
     * 使用分圈处理方式
     */
    public class rotateMatrix {
    
        public void rotate(int[][] matrix){
            int tR = 0;
            int tC = 0;
            int dR = matrix.length - 1;
            int dC = matrix[0].length - 1;
            while (tR < dR){
                rotateEdge(matrix, tR++, tC++, dR--, dC--);
            }
        }
    
        public void rotateEdge(int[][] matrix, int tR, int tC, int dR, int dC){
            int times = dC - tC;
            int tmp = 0;
            for (int i =0; i< times; i++){
                tmp = matrix[tR][tC + i];
                matrix[tR][tC + i] = matrix[dR -i][tC];
                matrix[dR -i][tC] = matrix[dR][dC -i];
                matrix[dR][dC -i] = matrix[tR + i][dC];
                matrix[tR + i][dC] = tmp;
            }
        }
    
        public static void main(String[] args){
            rotateMatrix tmp = new rotateMatrix();
            int[][] matrix = {{1, 2, 3, 4},{5, 6, 7, 8}, {9, 10, 11, 12},
                    {13, 14, 15, 16}};
            tmp.rotate(matrix);
            for (int[] arr: matrix){
                for (int i=0; i< arr.length; i++){
                    System.out.print(arr[i]+ " ");
                }
                System.out.println();
            }
        }
    
    }
    

    更多相关内容
  • 以下是关于方阵顺时针旋转的实现代码。需要的朋友参考下
  • 方阵顺时针旋转90度

    2021-04-05 22:08:03
    # -*- coding:utf-8 -*- class Solution: def rotateMatrix(self, matrix... # 由于是方阵,则先以主对角线为轴进行交换 for i in range(len(matrix)): for j in range(i, len(matrix)): matrix[i][j], matrix[j].

    在这里插入图片描述

    # -*- coding:utf-8 -*-
    
    class Solution:
        def rotateMatrix(self, matrix, n):
            # write code here
            # 由于是方阵,则先以主对角线为轴进行交换
            for i in range(len(matrix)):
                for j in range(i, len(matrix)):
                    matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
                    
            # 在交换
            for i in range(len(matrix)):
                matrix[i] = matrix[i][::-1]
                
            return matrix
    
    展开全文
  • 将二维数组方阵顺时针旋转90°

    简介

    网上有几篇描述这个算法的文章我感觉都不太直观。所以我干脆自己写一篇

    图例

    旋转如图所示,我把边标上序号了。
    注意,方阵是绕左上角旋转顺时针90°
    在这里插入图片描述
    在程序当中我们只需要遍历1/4的部分
    在这里插入图片描述
    遍历这部分的每个元素的时候,都需要进行4步操作,这四步操作就是将4个元素位置进行交换。
    交换的位置公式为:

    1. a[i][j] = a[n-j-1][i],通过这个公式可以计算后面四个的位置,将等式右侧变为等是左侧,然后把i,j看成变量求解等式右侧的索引
    2. a[n-j-1][i] = a[n-i-1][n-j-1]
    3. a[n-i-1][n-j-1] = a[n-(n-j-1)-1][n-i-1] = a[j][n-i-1]
    4. a[j][n-i-1] = a[n-(n-i-1)-1][j] = a[i][j]
      在这里插入图片描述

    代码

    所以就有了如下的代码(C语言版本)

    // 将方阵旋转90°
    #define MAX 100
    void Rotate(ElemType src[][MAX], int n)
    {
    	ElemType temp;
    	int i, j;
    	for (i = 0;i < n / 2;i++) {
    		for (j = i;j < n - i - 1;j++) {
    			temp = src[i][j];
    			src[i][j] = src[n - j - 1][i];
    			src[n - j - 1][i] = src[n - i - 1][n - j - 1];
    			src[n - i - 1][n - j - 1] = src[j][n - i - 1];
    			src[j][n - i - 1] = temp;
    		}
    	}
    }
    
    展开全文
  • 今天小编就为大家分享一篇Java实现矩阵顺时针旋转90度的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 目录 一、问题描述 二、问题求解 (1)方阵顺时针旋转(以3阶方阵为例) 问题分析: 程序设计: ...(2)方阵转置(以3阶方阵为例) ...按顺时针旋转90度后方阵为: 7 4 1 8 5 2 9 8 3 转置后的方阵为: 1 4...

    目录

    一、问题描述

    二、问题求解

    (1)方阵顺时针旋转(以3阶方阵为例)

    问题分析:

    程序设计:

    (2)方阵转置(以3阶方阵为例)

    问题分析:

    程序设计:


     

    一、问题描述

    问题:

    1.将一个n阶方阵按顺时针方向旋转90度。

    2.将一个n阶方阵进行转置。

    实例:

    1    2    3

    4    5    6

    7    8    9

    按顺时针旋转90度后方阵为:

    7   4    1

    8    5    2

    9    8    3

    转置后的方阵为:

    1    4   7

    2    5   8

    3   6   9

    输入:

    3

    1    2    3

    4    5    6

    7    8    9

    输出:

    7   4    1

    8    5    2

    9    8    3

    1    4   7

    2    5   8

    3   6   9


    二、问题求解

    (1)方阵顺时针旋转(以3阶方阵为例)

    问题分析:

    对于矩阵等二维方向上的数字变化问题的求解,最主要的是找到其中的位置变化规律。

    ①方阵的位置表示如下:

    [0,0]     [0,1]       [0,2]

    [1,0]     [1,1]       [1,2]

    [2,0]     [2,1]       [2,2]

    ②方阵旋转90度后的位置变化

    [2,0]     [1,0]       [0,0]

    [2,1]     [1,1]       [0,1]

    [2,2]     [1,2]       [0,2]

    根据上述的位置变化可知:方阵旋转90度后,每一行的列号不变,并向下逐次递加1;每一行的行号从左往右依次递减。由于在同一个方阵上修改,是逐行从左往右依次修改,所以前面修改的值必然会对后面的值产生影响,所以,需要借助一个辅助矩阵。

    程序设计:

    #include <stdio.h>
    
    int main() {
    	int n;
    	int a[10][10];
    	int b[10][10];
    	//输入阶数
    	scanf("%d", &n);
    	//输入方阵的值
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			scanf("%d", &a[i][j]);
    		}
    	}
    	
    	//方阵顺时针变化
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			b[i][j] = a[n - j - 1][i];		
    		}
    	}
    
    	//方阵打印
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			//printf("%-3d", b[i][j]);
    			printf("%-3d", a[i][j]);
    		}
    		printf("\n");
    	}
    	
    }

    运行调试结果:

     


    (2)方阵转置(以3阶方阵为例)

    问题分析:

    ①方阵的位置表示如下:

    [0,0]     [0,1]       [0,2]

    [1,0]     [1,1]       [1,2]

    [2,0]     [2,1]       [2,2]

    ②方阵转置的位置变化

    [0,0]     [1,0]       [0,0]

    [0,1]     [1,1]       [2,1]

    [0,2]     [1,2]       [2,2]

    根据上述的位置变化可知:方阵转置后,主对角线(从左上角到右下角)上的数字位置没有变化,其他位置数字的位置变化是行列号对调。

    程序设计:

    #include <stdio.h>
    
    int main() {
    	int n;
    	int a[10][10];
    	int b[10][10];
    	//输入阶数
    	scanf("%d", &n);
    	//输入方阵的值
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			scanf("%d", &a[i][j]);
    		}
    	}
    
    	//方阵转置
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			b[i][j] = a[j][i];
    		}
    	}
    
    	//方阵打印
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			printf("%-3d", b[i][j]);
    		}
    		printf("\n");
    	}
    
    }

    运行调试结果:

     

    展开全文
  • C++矩阵顺时针旋转90度

    万次阅读 2019-05-30 16:53:28
    将一个矩阵顺时针旋转90度, 比如给定一个矩阵A: 旋转之后为: 2. 思路 和打印矩阵一样,这里也是从宏观出发,先旋转最外圈的,然后在旋转内圈的正方形. 关于我们旋转一个正方形代码我们只需要找到规律就好了.这里我们...
  • 那要先想想一个二维数组需要几次调整才能使他转90度。 我们拿一个3*3的二维数组居例子 首先我们定义个一二维数组,是这样的 1 2 3 4 5 6 7 8 9 那么第一步(对角线交换) 1 4 7 2 5 8 3 6 9 乍一看可以...
  • 数据—将一个N*N矩阵顺时针旋转90度

    千次阅读 2019-05-09 23:42:31
    1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180,或者逆时针90都一样的思路),不占用额外空间 实现 按照规律一层一层逐个进行旋转 /** * 1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针...
  • 请你将图像顺时针旋转 90 。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],...
  • 【定义】 二维数组也称为矩阵(Matrix),关于矩阵的算法经常在各种考试及面试中出现,它主要考查被测试者的逻辑思维能力、...【问题】将矩阵顺时针旋转90度 如图 【分析】 这题是北京航天大学考研试题。对于...
  • 矩阵顺时针旋转90度

    万次阅读 多人点赞 2013-04-19 16:12:42
    ----------------------------------------------------------------------------------------------- 有这样一道题目: 10.已知有n×n的方阵A,...(3)顺时针旋转90度。 这里解决的是第3小问。 --------
  • Java 数组转置 方阵顺时针旋转90度

    万次阅读 2014-10-24 08:55:42
    方阵顺时针旋转90 方法一:可以看出,将二维数组顺时针旋转 90 ,就是将其转置后的数组的列进行前后交换(即第一列变为最后一列,第二列变为倒数第二列) 方法二:通过观察,可以看出: ...
  • 数字旋转方正实现,方阵旋转问题分析演示,C++代码实现;
  • #include<iostream> using namespace std; #define N 3 int main() { int i,j,a[N][N],b[N][N]; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i<... .
  • 先设计思路,以4*4矩阵为例,不难发现其实如果把下列同色的行和列交换,其实就能达到目标不难发现,实现有如下规律:i = 0j = 1,2,3i = 1j = 2 ,3i= 2j = 3再将data[i][j] 和data[j][i] 交换即可,而涉及到交换就会...
  • 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 ...但,如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13 9 5 1 14 10 6 2 15 11 7 3 ...
  • Java:实现将方阵中的元素顺时针旋转90度算法(附完整源码)
  • 一、首先第一步先初始化一个n阶方阵,语句如下: int arr[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; 二、显而易见,这是一个4×4的二维数组,为了方便观察结果,我们先把当前没有做任何处理的方阵...
  • You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 解题思路: 本题要求我们对矩阵进行90...3.必定是方阵,否则旋转.
  • 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N...
  • 方阵顺时针旋转(JAVA)

    千次阅读 2020-03-07 16:14:16
    题目描述: 输入一个N阶方阵(0<...10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵 旋转举例:(如下四个三阶方阵从左到右为数字围绕中心顺时针旋转) 1 2 3 7 4 1 9 8 7 3 6 9 4 5 6 8 5 2 ...
  • 分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工... * 将正方形矩阵顺时针转动90度。 * * 思路: * 矩阵分圈处理。 * * @author Created by LiveEveryDay */ public class Rota
  • 将N*N的int类型矩阵顺时针旋转90度,要求不允许使用额外的辅助空间。 void rotate_90_degree(vector> &matrix) { if (matrix.empty() || matrix.size() != matrix[0].size()) throw exception(); int N = ...
  • 华为2019校招笔试题之旋转方阵(python版)

    万次阅读 多人点赞 2019-06-19 11:39:17
    -- 输入一个N阶方阵(0),输出此方阵顺时针旋转M(0)次后的方阵 -- 旋转举例:(如下四个三阶方阵从上到下为数字围绕中心顺时针旋转 1 2 3 4 5 6 7 8 9 7 4 1 8 5 2 9 6 3 9 8 7 6 5 4 3 2 1 3 6 9 2 5 8 1 4 7 输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,243
精华内容 497
热门标签
关键字:

方阵顺时针旋转90度