四、蛇形矩陣
描述: 蛇形矩陣是由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] + "\t");
56 }
57
58 System.out.println();
59 }
60
61 return ary;
62 }
63
64 }