求编写JAVA螺旋矩阵
发布网友
发布时间:2023-11-16 04:57
我来回答
共3个回答
热心网友
时间:2024-03-19 10:11
按照你的要求用Java编写的螺旋矩阵程序如下:
public class N {
public static void main(String[] args) {
final int N=4;
int a[][]=new int[N][N];
int num=1;
int i=0,j=0,m=0;
if(N%2==0)
m=N/2;
else
m=N/2+1;
for(i=0;i<=m-1;i++){
for(j=i;j<=N-i-1;j++){
a[i][j]=num;
num++;
}
for(j=i+1;j<=N-i-1;j++) {
a[j][N-i-1]=num;
num++;
}
for(j=N-i-2;j>=i;j--){
a[N-i-1][j]=num;
num++;
}
for(j=N-i-2;j>=i+1;j--){
a[j][i]=num;
num++;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
System.out.print(String.format("%3d",a[i][j]));
}
System.out.println();
}
}
}
运行结果:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
热心网友
时间:2024-03-19 10:11
螺旋矩阵的具体代码和分析。
请给好评哦亲
热心网友
时间:2024-03-19 10:11
class Matrix{
int x,y,minX,minY;
int maxX,maxY;
int step;
boolean goX;
public int[][] getSnake(int size){
int[][] snake = new int[size][size];
maxY=maxX=size-1;
x=y=minX=minY=0;
step=1;
goX=true;
int max = size * size;
for (int i = 1; i <=max; i++) {
setDate(snake,i);
}
return snake;
}
private void setDate(int[][] matrix,int date){
matrix[x][y]=date;
checkSide();
if (goX){
x+= step;
}else {
y+=step;
}
}
private void checkSide() {
if (x==minX&&y==minY+1){
step=1;
goX=true;
minX++;
minY++;
maxX--;
maxY--;
}else if (x==maxX&&y==minY){
goX=false;
}
else if (x==maxX&&y==maxY){
step=-1;
goX=true;
}else if (x==minX&&y==maxY){
goX=false;
}
}
}