把一个方阵顺时针旋转。
2013-04-07 17:07
302 查看
/* * 转方阵 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 转置后变为: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 下面的代码实现的功能就是要把一个方阵顺时针旋转。 */ public class Demo03 { // 矩阵顺时针旋转 public static void rotation(int[][] n,int [][] m,int i,int j){ int t = j; // 标记最后一行的位置 if(i>=n.length) return; for(int k=0;k<n.length;k++){ m[i][k] = n[j--][i]; // 解决一行 } rotation(n,m,++i,t); // 递归解决下一行 } // 输出矩阵 public static void print(int[][] t){ for(int[] x: t){ for(int y:x){ System.out.print(y+"\t"); } System.out.println(); } } public static void main(String[] args){ int[][] n = { {1 ,2 ,3 ,4 }, {5 ,6 ,7 ,8 }, {9 ,10,11,12}, {13,14,15,16} }; print(n); // 显示原矩阵 int len = n.length; int[][] m = new int[len][len]; // 目标矩阵 rotation(n,m,0,len-1); // 矩阵顺时针旋转 System.out.println("顺时针旋转结果:"); print(m); // 显示目标矩阵 } }运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 顺时针旋转结果: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4
相关文章推荐
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。
- 顺时针或逆时针旋转180度等于先作一个水平镜像,再作一个垂直镜像!
- Java 数组转置 方阵顺时针旋转90度
- 将一个方阵旋转90度
- 三角螺旋阵 方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
- 方阵顺时针旋转的实现代码
- 行列方阵顺时针旋转
- 将一个二维数组顺时针旋转90°
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转
- 面试题6 将一个n*n图像矩阵顺时针旋转90°
- 方阵原地顺时针旋转90度
- 不使用额外空间复杂度(缓存矩阵)顺时针旋转一个N*N的矩阵
- 方阵顺时针旋转
- 将一个二维数组顺时针旋转90°
- Arrays_Strings 90度顺时针逆时针旋转方形矩阵 @CareerCup
- 【数组】将N*N的int类型矩阵顺时针旋转90度
- 处理模型——找到对应一个方向的旋转角
- Coco2dx制作一个3D旋转的效果
- 用cocos2d-x做一个简单的windows phone 7游戏:旋转炮塔(二)
- 方阵旋转--蓝桥杯