1 , n阶顺时针螺旋方阵:
C:\Users\moonriver\Desktop\1.png
代码:
- import java.util.Scanner;
- public class SpiralMatrix {
- public static void main(String [] args){
- Scanner scn= new Scanner(System.in);
- System.out.println("请输入螺旋方阵的阶数: ");
- int order=scn.nextInt();
-
- SpiralMatrix sm=new SpiralMatrix();
- sm.printClockWise(order);
- }
- //找到一个函数能够计算出order阶矩阵中 row 行, col列上的数值大小, 想到递归
- public int getValue(int row, int col, int order) {
- //基准条件
- if(1==order) //最简单的一阶
- return order;
- if(0==order) //偶数阶的最简单形式
- return order;
-
- // 高阶矩阵而元素又位于矩阵的最外层, 能够通过简单的计算得出.
- //由于涉及多个 return语句, 只用if即可 .
- if(0==row)
- return col+1;
- if (col==order-1)
- return col+row+1;
- if(row==order-1)
- return 3*order-2-col;
- if(0==col)
- return 4*order-3-row;
- //所有简单的情况排除后,进行脱阶运算.
- return (order*4-4)+getValue(row-1, col-1, order-2);
- }
- public void printClockWise(int order) {
- int value;
- // int sum=order*order+1;
- for(int i=0;i<order; i++) {
- for(int j=0;j<order; j++) {
- value=getValue(i,j,order);
- // value=sum-value;
- System.out.print(value+"\t");
- }
- System.out.println("\n\n");
- }
- }
- }
复制代码
2, 由内而外的螺旋 方阵
C:\Users\moonriver\Desktop\2.png
代码:
- import java.util.Scanner;
- public class SpiralMatrix {
- public static void main(String [] args){
- Scanner scn= new Scanner(System.in);
- System.out.println("请输入螺旋方阵的阶数: ");
- int order=scn.nextInt();
-
- SpiralMatrix sm=new SpiralMatrix();
- sm.printClockWise(order);
- }
- //找到一个函数能够计算出order阶矩阵中 row 行, col列上的数值大小, 想到递归
- public int getValue(int row, int col, int order) {
- //基准条件
- if(1==order) //最简单的一阶
- return order;
- if(0==order) //偶数阶的最简单形式
- return order;
-
- // 高阶矩阵而元素又位于矩阵的最外层, 能够通过简单的计算得出.
- //由于涉及多个 return语句, 只用if即可 .
- if(0==row)
- return col+1;
- if (col==order-1)
- return col+row+1;
- if(row==order-1)
- return 3*order-2-col;
- if(0==col)
- return 4*order-3-row;
- //所有简单的情况排除后,进行脱阶运算.
- return (order*4-4)+getValue(row-1, col-1, order-2);
- }
- public void printClockWise(int order) {
- int value;
- int sum=order*order+1;
- for(int i=0;i<order; i++) {
- for(int j=0;j<order; j++) {
- value=getValue(i,j,order);
- value=sum-value;
- System.out.print(value+"\t");
- }
- System.out.println("\n\n");
- }
- }
- }
复制代码 |
|