使用JAVA输出蛇形矩阵
一、蛇形矩阵是什么?如下图所示:

二、思路解释:首先根据这个样式,我们会想到使用数组的方法进行求解。把这个放在思路放在矩阵中,我们就会想到值是连续的,我们直接修改数组的下标使得相应的值赋在指定的位置就好了。那么问题就来了,这个应该如何实现呢?首先我们仔细观察一下,就会发现:
以左上角为起点,然后向右移动,行数不变,列数+1(0,1)。下移:行数+1,列数不变(1,0)。左移:行数不变,列数-1(0,-1)。上移:行数+1,列数不变(-1,0)。
然后按照上述的步长来进行矩阵位置的确定。然后我们现在还有另外一个需要解决的问题,就是什么时候矩阵开始换方向。
我们观察一下,就会得出结论:
当我们的矩阵下一步运算会突破矩阵界限,或者下一步运算的位置已经存有值了,那么我们就应该换向。
三、代码实现:
import java.util.Scanner; public class snake_arr { 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}; int x=0,y=0,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; y=b; } for(int[] row:res){ for(int val:row){ System.out.printf("%d ",val); } System.out.println(); } } }

浙公网安备 33010602011771号