java打印N阶回旋矩阵凯发娱乐 - 凯发娱乐

java打印N阶回旋矩阵凯发娱乐

2019年02月16日09时29分17秒 | 作者: 涵菱 | 标签: 矩阵,长度,开端 | 浏览: 11232

算法剖析:

1.将此矩阵分解为一个一个的圈,如下图,1-20能够当作一个圈,21-32是一个圈,33-36也是一个圈。



2.再将圈分解为四个平等的数列



3.打印的进程顶用一个二维数组存储矩阵,记载圈数 ,当时圈的数列长度 和圈开端计数的数字 。

public class Matrix {
 public void printMatrix(int n){
 int array [][] = new int[n][n];
 int circleCount ; //圈数 
 int currentCircleLength = n-1; //当时圈的数列长度
 int startNumber = 1; // 圈开端计数的数字
 circleCount = n/2 + n%2;
 currentCircleLength = n-1;
 startNumber = 1;
 for(int i = 0; i circleCount; i++){
 currentCircleLength = n - 1 - 2*i;
 for(int j = 0; j currentCircleLength; j++){//→
 array[i][i+j] = startNumber++;
 for(int j = 0; j currentCircleLength; j++){//↓
 array[i+j][n-1-i] = startNumber++; 
 for(int j = 0; j currentCircleLength; j++){//←
 array[n-1-i][n-1-i-j] = startNumber++; 
 for(int j = 0; j currentCircleLength; j++){//↑
 array[n-1-i-j][i] = startNumber++; 
 if(n%2  1){//奇数补齐中心最终一个数
 array[n/2][n/2] = n*n;
 for(int i = 0; i i++){
 for(int j = 0; j j++){
 System.out.print(array[i][j]+" ");
 System.out.println("");
 * @param args
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 Matrix matrix = new Matrix();
 matrix.printMatrix(5);

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章