我需要一系列for循环来返回如下所示的框,具体取决于m
&的值。 n
。
应输出:
1 1 1 1 1 1 1
1 2 2 2 2 2 1
1 2 3 3 3 2 1
1 2 2 2 2 2 1
1 1 1 1 1 1 1
下面是我的代码到目前为止,它使用一系列循环将框拆分为一半,并上升或下降列和行的值。我被困的地方是试图找到一种方法来为这些值制作这些周界。另请注意,这应该可以在不使用任何if语句的情况下工作。
int m = 5; //column value
int n = 7; //row value
int column;
for (int row = 0; row <= (m / 2); row++) {
//Ascending
for (column = 1; column < (n / 2); column++) {
int outputNumber = row + 1;
System.out.print(outputNumber + " ");
}
//Fixed
do {
int outputNumber = row + 1;
System.out.print(outputNumber + " ");
}
while (column < 0);
//Descending
for (column = n / 2; column >= 0; column--) {
int outputNumber = row + 1;
System.out.print(outputNumber + " ");
}
System.out.println();
}
for (int row = m / 2; row > 0; row--) {
for (column = 1; column <= n; column++) {
System.out.print(row + " ");
}
System.out.println();
}
上述代码的当前输出:
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
2 2 2 2 2 2 2
1 1 1 1 1 1 1
答案 0 :(得分:0)
这是我的结果。我知道它有点复杂和快速写,但它解决了你的问题。我还用其他数字测试过它:
int m = 5; //column value
int n = 7; //row value
for (int i = 0; i < m / 2 + 1; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.print(j + 1 + " ");
}
for (int j = 0; j < n - ((i + 1) * 2); j++) {
System.out.print(i + 1 + " ");
}
for (int j = 0; j < i + 1; j++) {
System.out.print(i + 1 - j + " ");
}
System.out.println("");
}
for (int i = m / 2 + 1; i < m; i++) {
for (int j = 0; j < m - i; j++) {
System.out.print(j + 1 + " ");
}
for(int j = 0; j < n - (m - i) * 2; j++) {
System.out.print(m-i + " ");
}
for(int j = 0; j < m - i; j++) {
System.out.print(m - i - j + " ");
}
System.out.println("");
}
答案 1 :(得分:0)
假设我的理解是正确的,周边瓷砖应该是1,然后每个瓷砖应该显示最少数量的步骤&#39;它需要从矩阵外部到达那里。
我个人很难想象/遵循您的解决方案,因此我不确定我的建议是否符合您的理解。
首先,让这个矩阵的构造与该矩阵的打印分开。我认为这样可以保持整洁,但那是我的风格。
假设你的矩阵中有c列和r行。因此,我们将使用嵌套for循环迭代每个单元格。
wx.GenericProgressDialog