题目描述
根据输入的N的值产生一个N*N的蛇形矩阵
输入
n
输出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
思路
首先新建一个n行n列的矩阵,然后开始填数。通过观察可以发现填数的方向有两个,一个是往右下角填数,一个是往右上角填数。那么如何让程序判断当前是应该往右下角还是右上角走呢?我的方法是定义一个变量,当它为单数的时候,往右下角走,双数就往右上角走,并设置它在循环结尾递增。(如果有更好的方法可以留言让我知道)再有就是确定每一轮填数的出发点,观察可以看出,每一轮的出发点都在矩阵的四个边上,当第一轮填数结束之后,i=1,j=0,也就是在3的位置,这个时候应该先往下填4,然后再从4的位置开始往右上角继续填数,往左下角填数的时候也是一样的,所以这个地方也要设置好条件。有了思路之后就用代码表示出来。
import java.util.Scanner;
public class P1105 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
int i=