我正在尝试根据用户输入创建矩阵。我想按照下面的说明开始这个
输入:3
输出:创建3x3矩阵,如下所示,从1开始,然后是2,并添加前两个数字。
3 2 1
5 55 34
8 13 21
如果用户输入为4,那么它应该创建一个4x4矩阵。
答案 0 :(得分:1)
是的,在Java中很有可能。
答案 1 :(得分:1)
试试这个。
static int[][] DIRS = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};
static boolean canGo(int[][] a, int n, int r, int c) {
if (r < 0 || r >= n)
return false;
if (c < 0 || c >= n)
return false;
if (a[r][c] > 0)
return false;
return true;
}
static int[][] solve(int n) {
int max = n * n;
int[][] array = new int[n][n];
int dir = 0, prev = 1, cur = 1;
int row = 0, col = n - 1;
for (int i = 1; i <= max; ++i) {
array[row][col] = cur;
if (!canGo(array, n, row + DIRS[dir][0], col + DIRS[dir][1]))
dir = (dir + 1) % DIRS.length;
row += DIRS[dir][0];
col += DIRS[dir][1];
int temp = cur;
cur = prev + cur;
prev = temp;
}
return array;
}
和
int[][] a = solve(3);
for (int[] row : a)
System.out.println(Arrays.toString(row));
结果:
[3, 2, 1]
[5, 55, 34]
[8, 13, 21]
答案 2 :(得分:1)
如果我写下代码并交给你,那将不符合SE的精神。所以,让我以你应该思考的方式指导你。
同样,这不是一个解决方案,而是一种你应该思考的可能方式。