天天看點

螺旋矩陣(java)螺旋方陣

輸出螺旋矩陣

  • 螺旋方陣
    • 示例
    • 代碼部分

螺旋方陣

輸出螺旋方陣,采用二維數組存儲。螺旋方陣将從1開始的自然數由方陣的最外圈向内螺旋方式的順序排列。

示例

螺旋矩陣(java)螺旋方陣

代碼部分

package juju0921;
import java.util.Scanner;
public class Juju {
	public static void main(String[] args) {
		int i=0,j=0;
		int z=0;
		System.out.println("請輸入方陣大小n(方陣為n*n)");
		Scanner in1 =new Scanner(System.in);
		int p=in1.nextInt();
		int a[][]=new int[p][p];
		int num=1;
		int c,q=p;
		if(p%2==0)
		{
			c=p/2;
		}
		else
		{
			c=(p+1)/2;
		}
		for(int n=0;n<c;n++)
		{
			//第一行從左向右循環
			for(j=z;j<p;j++)
			{
				a[z][j]=num++;
			}
			//最右列從上到下循環
			for(i=z;i<p-1;i++)
			{
				a[i+1][p-1]=num++;
			}
			//最底行從右向左循環
			for(j=p-1-1;j>z-1;j--)
			{
				a[p-1][j]=num++;
			}
			//最左列從下到上循環
			for(i=p-1-1;i>z;i--)
			{
				a[i][j+1]=num++;
			}
			p--;
			z++;
		}
		for(i=0;i<q;i++)
		{
			for(j=0;j<q;j++)
			{
				System.out.print(a[i][j]+"\t");
			}
			System.out.println("\n");
		}
		System.out.println("\n");
		z=0;
		p=q;
		j=z;
		num=1;
		for(int n=0;n<c;n++)
		{
			//第一列從上向下循環
			for(i=z;i<p;i++)
			{
				a[i][z]=num++;
			}
			//最底行從左到右循環
			for(j=z+1;j<p;j++)
			{
				a[p-1][j]=num++;
			}
			//最右列從下向上循環
			for(i=p-1-1;i>z-1;i--)
			{
				a[i][p-1]=num++;
			}
			//第一行從右到左循環
			for(j=p-1-1;j>z;j--)
			{
				a[z][j]=num++;
			}
			p--;
			z++;
		}
		for(i=0;i<q;i++)
		{
			for(j=0;j<q;j++)
			{
				System.out.print(a[i][j]+"\t");
			}
			System.out.println("\n");
		}
	}
}