四、蛇形矩阵
描述: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入
正整数N(N不大于100)
输出
输出一个N行的蛇形矩阵。
样例输入:5
样例输出:
1 3 6 10 15
2 5 9 14 16
4 8 13 17 22
7 12 18 21 23
11 19 20 24 25
接口说明
/**
*
* 输入一个不大于100的数字,产生蛇形矩阵字符串
*
* 例如输入5时,产生如下蛇形矩阵输出字符串,每个数字之间用空格分开
* 1 3 6 10 15
* 2 5 9 14 16
* 4 8 13 17 22
* 7 12 18 21 23
* 11 19 20 24 25
*
*
* @param number 不大于100的数字
* @return 蛇形矩阵字符串(需要控制换行)
*/
public String getResult(int number);
程序如下:16
17 public static int[][] show(int num) {
18 int[][] ary = new int[num][num];
19 int start = 1;
20
21 for (int i = 1; i < 2 * num; i++) {
22 if (i <= num) {
23 int startPoint = i - 1;
24
25 for (int j = 0; j < i; j++) {
26
27 ary[startPoint--][j] = start++; // 方向都是从j=0的方向开始
28
29 }
30 } else {
31 int foot = num - 1;
32 int footEnd = i - num;
33
34 for (int k = 0; k < 2 * num - i; k++) {
35 if (num % 2 == 1) { // 考虑sqrt为奇数和偶数情况
36 if (i % 2 == 1) { // sqrt为奇数,i则为偶数
37 ary[foot--][footEnd++] = start++;
38 } else {
39 ary[footEnd++][foot--] = start++;
40 }
41 } else if (num % 2 == 0) {
42 if (i % 2 == 0) {
43 ary[foot--][footEnd++] = start++;
44 } else {
45 ary[footEnd++][foot--] = start++;
46 }
47
48 }
49 }
50 }
51 }
52
53 for (int i = 0; i < num; i++) {
54 for (int j = 0; j < num; j++) {
55 System.out.print(ary[i][j] + " ");
56 }
57
58 System.out.println();
59 }
60
61 return ary;
62 }
63
64 }