本文共 2215 字,大约阅读时间需要 7 分钟。
今天写了java旋转矩阵,参考了下网上的代码。
旋转矩阵思路比较简单,其实就是按照人的思维方法(可能有更优解,但是我比较笨)
其实就是一个数组,先从左到右,然后从上到下,然后从右到左,最后从下到上,循坏一周后减二接着循环,直到最大值到达n*n
代码如下:
package news;import java.util.Scanner;public class luoxuan { public static final int NMAX = 100; public static void main(String [] arg){ /* * 编程输出螺旋方阵.螺旋方阵是指将从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。如4阶的螺旋方阵形式如下:1 2 3 412 13 14 511 16 15 610 9 8 7要求:1)从键盘输入螺旋方阵的阶数 2)代码有注释 3)对算法的思路给出文字描述 */ System.out.println("请输入螺旋矩阵阶数:"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[][] arrays=new int[NMAX][NMAX]; int i,j; for(i=0;iz) break; arrays[i][j] = ou++; } for(j--,i++;i z) break; arrays[i][j] = ou++; } for(i--,j--;j>=c;j--)//从右到左 { if(ou>z) break; arrays[i][j] = ou++; } for(j++,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou++; } c++; } } private static void getluoxuan11(int [][]arrays,int n) { // System.out.println("从矩阵的左上角开始从数字的最大值开始螺旋"); int c=0,i,j; int z = n*n; int ou=z; while(ou>=1) { i=0; j=0; for(i+=c,j+=c;j z) break; arrays[i][j] = ou--; } for(j--,i++;i z) break; arrays[i][j] = ou--; } for(i--,j--;j>=c;j--)//从右到左 { if(ou>z) break; arrays[i][j] = ou--; } for(j++,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou--; } c++; } } private static void getluoxuan2(int [][]arrays,int n) {// System.out.println("从矩阵的右上角开始从数字1开始螺旋:"); int c=0,i,j; int z = n*n; int ou=1; while(ou<=z) { i=0; j=0; for(i=c,j=n-c-1;j>=c;j--) //从右到左 { if(ou>z) break; arrays[i][j] = ou++; } for(j++,i++;i z) break; arrays[i][j] = ou++; } for(i--,j++;j z) break; arrays[i][j] = ou++; } for(j--,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou++; } c++; } } static void getluoxuan22(int [][]arrays,int n) { // System.out.println("从矩阵的右上角开始从矩阵的最大值开始螺旋:"); int c=0,i,j; int z = n*n; int ou=z; while(ou>=1) { i=0; j=0; for(i=c,j=n-c-1;j>=c;j--) //从右到左 { if(ou>z) break; arrays[i][j] = ou--; } for(j++,i++;i z) break; arrays[i][j] = ou--; } for(i--,j++;j z) break; arrays[i][j] = ou--; } for(j--,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou--; } c++; } } }
转载地址:http://soorb.baihongyu.com/