顺时针螺旋递增矩阵

来源:互联网 发布:linux目录结构命令 编辑:程序博客网 时间:2024/04/29 22:49

与[BASIC-25]类似,如图,顺时针打印由外向内顺时针打印矩阵


具体思想与下题类似

[BASIC-25]-回形取数

点击打开链接


import java.util.Scanner;public class Main{static int temp = 0;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int row = scan.nextInt();  //行数int column = scan.nextInt();//列数int arr[][] = new int[row][column];PrintMatrix(arr,column,row);printCircle(arr,column,row);}private static void printCircle(int arr[][],int column,int row){for(int i=0; i<row; ++i){for(int j=0; j<column; ++j){System.out.print(arr[i][j]+"  ");}System.out.println();}}private static void PrintMatrix(int arr[][],int column,int row){if(arr==null || column <=0 || row <=0)return ;int startX = 0;int startY = 0;while(startX*2 < column && startY*2 <row){PrintMatrixIncircle(arr,column,row,startX,startY);++startX;++startY;}}private static void PrintMatrixIncircle(int arr[][],int column,int row,int startX,int startY){int endX = column-1-startX;int endY = row - 1 - startY;ARowIncreasingly(arr,startY,startX,endX);if(endY>startY)AColumnIncreasingly(arr,endX,startY+1,endY);if(endX>startX && endY>startY)ARowDecreasingly(arr,endY,endX-1,startX);if(endX>startX && endY-1 > startY)AColumnDecreasing(arr,startX,endY-1,startY+1);}private static void ARowIncreasingly(int arr[][],int pos,int firstX,int lastX){for(int i=firstX; i<=lastX; ++i){arr[pos][i] = ++temp;}}private static void AColumnIncreasingly(int arr[][],int pos,int firstY,int lastY){for(int i=firstY; i<=lastY; ++i){arr[i][pos] = ++temp;}}private static void ARowDecreasingly(int arr[][],int pos,int fisrtX,int lastX){for(int i=fisrtX; i>=lastX; --i){arr[pos][i] = ++temp;}}private static void AColumnDecreasing(int arr[][],int pos,int firstY,int lastY){for(int i=firstY; i>=lastY; --i){arr[i][pos] = ++temp;}}}


0 0
原创粉丝点击