蛇形矩阵(java)

public class 蛇形矩阵3_3 {
public static void main(String[] args) {
java.util.Scanner in = new java.util.Scanner(System.in);
while (in.hasNext()) {
int N = in.nextInt() ;
int go=1;//填数 
int she[][]=new int[N][N];//设置一个矩阵,默认值为零
int x=0,y=N-1;//开始位置坐标
she[0][N-1]=1;//开始位置初始化为1
while(go<N*N)//填满退出
{
while(x+1<N&&she[x+1][y]==0)she[++x][y]=++go;//下,探测下面是否遍历过
while(y-1>=0&&she[x][y-1]==0)she[x][--y]=++go;//左,探测左面是否遍历过
while(x-1>=0&&she[x-1][y]==0)she[--x][y]=++go;//上,探测上面是否遍历过
while(y+1<N&&she[x][y+1]==0)she[x][++y]=++go;//右,探测右面是否遍历过
}
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
{
System.out.printf("%3d",she[i][j]);//域宽
if(j!=N-1)
System.out.print(" ");
else
System.out.println();
}
}
in.close();
}

}

以前的/

import java.util.Scanner;
public class Main21540 {
public static void main(String[] args){
Scanner in =new Scanner(System.in);
while(in.hasNext()){
int N=in.nextInt();
int [] [] a=new int [N][N];
int sum=1;
int w=0;
for(int i=N-1;i>=0;i--) {
if(sum>N*N)break;
for(int q=w;q<=i;q++) {if(sum>N*N)break;
a[q][i]=sum;sum++;
}
for(int j=i-1;j>=w;j--) {if(sum>N*N)break;
a[i][j]=sum;sum++;
}
for(int x=i-1;x>w;x--) {if(sum>N*N)break;
a[x][w]=sum;sum++;
}
for(int k=w;k<i;k++) {if(sum>N*N)break;
a[w][k]=sum;sum++;
}w++;
}
for(int r=0;r<N;r++) { System.out.print(" ");
for(int t=0;t<N;t++) {
if(a[r][t]>=10)
System.out.print(a[r][t]);
else if(a[r][t]<=10)
System.out.print(" "+a[r][t]);

if(t<N-1) {
System.out.print(" ");
}
if(t==N-1) {
System.out.println();
}}}System.out.println();
}
}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值