我需要一个函数,该函数以(int n)作为函数参数来构建以下矩阵:
在文本中,
runtime 'io.netty:netty-tcnative-boringssl-static:2.0.25.Final'
所需的代码:
1, 6, 14, 20, 24,
10, 2, 7, 15, 21,
17, 11, 3, 8, 16,
22, 18, 12, 4, 9,
25, 23, 19, 13, 5
链接到矩阵逻辑: Logic
到目前为止,我已经尝试过:我也尝试过使用10s标志和int变量来做另一种方式,但没有成功。最干净的尝试是这样:
static void Print(int n)
{
int[][] matrix= new int[n][n];
int i,j;
// Help needed here to build the matrix e.g. for(i=0;i<n*n;i++) {…}
//To print it
for (i=0; i<n; i++)
{
for(j=0; j<n; j++)
System.out.print(matrix[i][j]+" ");
System.out.println();
}
}
答案 0 :(得分:1)
public class Main {
public static void makeMatrix(int n){
int[][] matrix = new int[n][n];
int i,j;
int x=0, y=0, flipX=0, flipY=0;
for (int k=0;k<n*n;k++){
if (x >= n){
y = ++flipX;
x = 0;
}
else if (y >= n){
x = ++flipY;
y = 0;
}
matrix[x++][y++] = k+1;
}
//To print it
int sizeOfMaxDigit = String.valueOf(n * n).length();
for (i=0; i<n; i++) {
for(j=0; j<n; j++) {
System.out.printf("%" + sizeOfMaxDigit + "d ", matrix[i][j]);
}
System.out.println();
}
}
public static void main(String[] args){
makeMatrix(1);
System.out.println();
makeMatrix(2);
System.out.println();
makeMatrix(3);
System.out.println();
makeMatrix(4);
System.out.println();
makeMatrix(5);
System.out.println();
makeMatrix(6);
System.out.println();
makeMatrix(10);
}
}
给我以下输出:
1
1 3
4 2
1 4 8
6 2 5
9 7 3
1 5 11 15
8 2 6 12
13 9 3 7
16 14 10 4
1 6 14 20 24
10 2 7 15 21
17 11 3 8 16
22 18 12 4 9
25 23 19 13 5
1 7 17 25 31 35
12 2 8 18 26 32
21 13 3 9 19 27
28 22 14 4 10 20
33 29 23 15 5 11
36 34 30 24 16 6
1 11 29 45 59 71 81 89 95 99
20 2 12 30 46 60 72 82 90 96
37 21 3 13 31 47 61 73 83 91
52 38 22 4 14 32 48 62 74 84
65 53 39 23 5 15 33 49 63 75
76 66 54 40 24 6 16 34 50 64
85 77 67 55 41 25 7 17 35 51
92 86 78 68 56 42 26 8 18 36
97 93 87 79 69 57 43 27 9 19
100 98 94 88 80 70 58 44 28 10
由于这个问题,在我看来,这就像是一项家庭作业,因此,为了您的调试乐趣,我将不评论该解决方案,以查看其工作原理。