所需输出
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4
这是一道模式题,我需要用Java来解决它。
这是我的代码。
public class Pattern31 {
public static void main(String[] args) {
pattern31(4);
}
static void pattern(int n){
int originaln = n;
n=2*n-1;
for(int row = 0; row <=n; row++) {
for (int col = 0; col <= n; col++) {
int valueAtIndex = originaln - Math.min(Math.min(row, col), Math.min(n-row, n-col));
System.out.print(valueAtIndex + " ");
}
System.out.println();
}
}
我目前使用此代码得到的输出。
4 4 4 4 4 4 4 4
4 3 3 3 3 3 3 4
4 3 2 2 2 2 3 4
4 3 2 1 1 2 3 4
4 3 2 1 1 2 3 4
4 3 2 2 2 2 3 4
4 3 3 3 3 3 3 4
4 4 4 4 4 4 4 4
如果
2*n-1
是您要输出的矩阵的宽度和高度,则公式 n
是正确的,但这不是代码的其余部分使用 n
的方式。循环从 0 迭代到 n
。列数以及用于从右侧计算索引的公式(如 n-row
)也是如此。在所有这些情况下,您将 n
视为最后一列/行的索引。
在这种情况下,您应该将
n
定义为 2*n-2
。然后是最后一个索引,它比所需的大小(宽度/高度)小一个。