问题描述
写个程序,打印出以下数据: 1 2 6 7 15 16 28 29 45 3 5 8 14 17 27 30 44 46 4 9 13 18 26 31 43 47 60 10 12 19 25 32 42 48 59 61 11 20 24 33 41 49 58 62 71 21 23 34 40 50 57 63 70 72 22 35 39 51 56 64 69 73 78 36 38 52 55 65 68 74 77 79 37 53 54 66 67 75 76 80 81
解决方案
public static void main(String[] args) {int[][] a = new int[9][9];int idx = 0;for(int i = 0; i < 10; i++) {if(i % 2 == 1) {for(int x = 0, y = i -1; x < i && y >= 0; x++, y--) {a[x][y] = ++idx;}} else {for(int x = i -1, y = 0; x >= 0 && y < i; x--, y++) {a[x][y] = ++idx;}}}for(int i = 1; i < 9; i++) {if(i % 2 == 1) {for(int x = 9 - 1, y = i; x >= i && y < 9; x--, y++ ) {a[x][y] = ++idx;}} else {for(int x = i, y = 9 -1; x < 9 && y >= i; x++, y--) {a[x][y] = ++idx;}}}for(int y = 0; y < 9; y++) {for(int x = 0; x < 9; x++) {System.out.print(a[x][y] + "t");}System.out.println();}}