本文章写了常见的蛇形矩阵
1.回性蛇形矩阵
2.上三角s型蛇形矩阵
3.完整s型蛇形矩阵
回形蛇形矩阵
输入
n,矩阵的维数,x横坐标起点,y纵坐标起点
样例输入
3 1 1
样例输出
1 2 3
8 9 4
7 6 5
思路:四个方向右下左上,顺时针填写数字,每次用while循环一行一列的依次填写,每次判断下一个要填的元素是否下标越界,是否数值为0,为0则填写,不为0则跳过循环,判断其他符合条件的方向,知道填写到数值为n*n为止
上三角S型蛇形矩阵
输入
n,矩阵的维数
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
思路:观察规律,发现递加规律是,横坐标减一,纵坐标加一,解释水平有限,举个栗子:本样例中第三行开始向右上方填数4,5,6就是下标[2,0],[1,1],[0,2],横坐标减一,纵坐标加以,横坐标加到0位置,纵坐标加到行数(i)为止
全S型蛇形矩阵
输入
n,矩阵的维数
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14 19
4 8 13 18 22
7 12 17 21 24
11 16 20 23 25
思路:在上三角完成基础上,同理完成下三角即可
代码实现
回形蛇形矩阵
import java.util.Scanner;
/**
* 回形蛇形矩阵
*/
public class Main1 {
static int n, x, y;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n=scanner.nextInt();//矩阵大小
x = scanner.nextInt();//起点横坐标
y = scanner.nextInt();//起点纵坐标
f1(n);
}
private static void f1(int n) {
int a[][] = new int[n][n];
//矩阵大小为1时输出1并且返回,不用浪费时间向后判断
int count = 1;
if (n == 1) {
System.out.println(count);
return;
}
int i = x - 1, j = y - 1