zoukankan      html  css  js  c++  java
  • 二维数组旋转90度、180度、270度

    给定一个 × n 的二维矩阵表示一个图像。

    将图像顺时针旋转 90 /180 /270 度。

      int a[3][3]={{1,2,3},{2,3,4},{4,5,6}};  //定义3*3数组演示
      int b[3][3],c[3][3],d[3][3];
      for(int i=0;i<3;i++)
      {   
         for(int j=0;j<3;j++)
    	 {
    		b[i][j]=a[2-j][i];  //顺时针旋转90 度
    		c[i][j]=a[2-i][2-j]; //顺时针旋转180度
    		d[i][j]=a[j][2-i];   //顺时针旋转270度
    	 }
    		
      }

    对数组的通过改变数组的下标进行数组旋转的操作

    输出结果

    *****原数列************
    1 2 3
    2 3 4
    4 5 6
    ****顺时针旋转90 度****
    4 2 1
    5 3 2
    6 4 3
    ****顺时针旋转180度****
    6 5 4
    4 3 2
    3 2 1
    ****顺时针旋转270度****
    3 4 6
    2 3 5
    1 2 4
    **********************

    原理:顺时针旋转90度时,列号变行号,且号下标顺序颠倒。

      0 1 2
    0 1 2 3
    1 2 3 4
    2 4 5 6

    即: a[0][0] -> b[0][2]      

            a[1][0] -> b[0][1]

            a[2][0] -> b[0][0]      //第一列变第一行

    用变量 i 表示行,表示列的话,为a[i][j] = b[2-j][i] //其中2为数组下标最大值

    即:

    在n*n数组中只需令a[i][j] = b[n-1-j][i]即可完成数组旋转90度

    在n*n数组中只需令c[i][j]=a[n-1-i][n-1-j]即可完成数组旋转180度

    在n*n数组中只需令d[i][j]=a[j][n-1-i]即可完成数组旋转270度

  • 相关阅读:
    【大数据】Hadoop常用启动命令
    Codeforces Round #695 (Div. 2)
    Codeforces Round #668 (Div. 2)
    Codeforces Round #666 (Div. 2)
    Educational Codeforces Round 94 (Rated for Div. 2)
    Sum Queries? CodeForces
    New Year and Old Subsequence CodeForces
    Gym
    huntian oy HDU
    The Boss on Mars HDU
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680216.html
Copyright © 2011-2022 走看看