蛇形矩阵
-
输入两个整数
n
和m
,输出一个n
行m
列的矩阵,将数字1
到n×m
按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。
-
输入样例
3 3
-
输出样例
1 2 3
8 9 4
7 6 5
- 思路
数字碰到边界后按照 右、下、左、上 的方向循环排列。从上到左编号为d=0、1、2、3
更新方式:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n= sc.nextInt(),m= sc.nextInt();
int[][] res=new int[n][m];//结果数组
int[] dx={-1,0,1,0},dy={0,1,0,-1};//按照上、右、下、左(即d从0到3)的顺序,存储横纵坐标变化方式
int x=0,y=0,d=1;//先向右走,d为方向右的编号:1
for (int i=1;i<=n*m;i++){
res[x][y]=i;
int a=x+dx[d],b=y+dy[d];//下一次的坐标
if(a<0||a==n||b<0||b>=m||res[a][b]>0){//判断坐标是否越界
//坐标越界说明蛇形要转弯改变方向
d=(d+1)%4;//变化规律
a=x+dx[d];//更新坐标
b=y+dy[d];
}
x=a;//更新坐标,即下次循环的res[x][y]
y=b;
}
for(int i=0;i<n;i++){
for (int j=0;j<m;j++){
System.out.printf("%d ",res[i][j]);
}
System.out.println();
}
}
}
标签:int,res,矩阵,偏移量,样例,蛇形,sc,随记
From: https://www.cnblogs.com/jia-ming/p/17988288