我也来个,只是研究算法,代码比较乱:
class Luoxuan{
public static void main(String[] args)
{
int[][] arr=new int[50][50];//这个数组的长度根据自己需要设定,越大越好。
int k=20;//这是要输入的数字
int n=0,m=k-1,z=k-1,t=1;
int i=0,j=0;
arr[0][0]=1;
while(n<k/2+1)//递归循环,每循环一次由外向里将三角形边上的数字装到数组里。里面的判断条件是我自己琢磨了定的,
{
i=n;
for(j=n;j<m;j++)//获取横向边的数字
{ if(arr[j]==0)
arr[j]=++t;
}
while(j>=n)//获取斜向边的数字
{
if(arr[j]==0)
arr[j]=++t;
j--;
i++;
}
for(i=z;i>n;i--)//获取竖向边的数字
{ if(arr[n]==0)
arr[n]=++t;
}
m-=2;
z-=2;
n++;
}
for(i=0;i<=k-1;i++)//输出螺旋数字
{
for(j=0;j<=k-1-i;j++)
{ if(arr[j]>=100)
System.out.print(arr[j]+" ");//空格是为了输出数字对齐,三位数都可以对齐,再多就得添加判断了,下面同理。
else
if(arr[j]>=10&&arr[j]<100)
System.out.print(arr[j]+" ");
else
System.out.print(arr[j]+" ");
}
System.out.println();
}
}
}
求技术分,版主…… |