这个算法题目怎么解,求大神………………第八题求java源码

……求java源码…………………………………………………………………………………………………………………………………………………………………………………………………………图片说明

 mport java.util.*;
public class Test8_1 {
int number=1;
int a[][]=new int[20][20];
public void doit(int m,int i1,int i2)
{
if(m<0) return;
if(m==1)
a[i1][i2]=number;
else
{
for(int i=0;i<m;i++)//top
a[i1][i2+i]=number++;
for(int i=0;i<m-1;i++)//right
a[i+i1+1][m+i2-1]=number++;
for(int i=0;i<m-1;i++)//bottom
a[m+i1-1][m+i2-2-i]=number++;
for(int i=0;i<m-2;i++)//left
a[m+i1-i-2][i2]=number++;
}
doit(m-2,i1+1,i2+1);
}
public void print(int m)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args){
System.out.println("输入数字(1-20):");
Scanner input=new Scanner(System.in);
int num=input.nextInt();
Test8_1 t=new Test8_1();
t.doit(num,0,0);
t.print(num);
}
}

自己看吧。

import java.util.Scanner;



public class LuoXuan {
    private int init=1;
    private int[][] array=new int[20][20];

    public void fillNumber(int number,int i,int j,int m,int n){
        if(number<=0)
            return;
        if(number==1)
            array[i][j]=init;
        else{
            //上行
            for(;j<m;j++)
                array[i][j]=init++;
            //右竖
            for(j--,i++;i<m;i++)
                array[i][j]=init++;
            //下行
            for(i--,j--;j>=n;j--)
                array[i][j]=init++;
            //左竖
            for(j++,i--;i>n;i--)
                array[i][j]=init++;
        }
        fillNumber(number-2, i+1, j+1,number-1,n+1);

    }

    public void printNumber(int number){
        for(int i=0;i<number;i++){
            for(int j=0;j<number;j++)
                System.out.print(array[i][j]+" ");
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("please input the number of line:");
        int number=scanner.nextInt();
        LuoXuan luoXuan=new LuoXuan();
        luoXuan.fillNumber(number, 0, 0,number,0);
        luoXuan.printNumber(number);

    }

}