解法1
题目思路
由下图观察可发现规律,矩阵的阶数x与里面回字型层数的关系,只需将每一层的for循环赋值即可
java 代码
import java.util.Scanner;
public class Main{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
while(true)
{
int x= sc.nextInt();
if(x==0)return;
int [][]a=new int [x+1][x+1];
for(int i=1;i<=(x+1)/2;i++)//层
{
for(int j=i;j<=x-i+1;j++)
{
a[i][j]=i;//横1
a[x-i+1][j]=i;//横2
a[j][i]=i;//竖1
a[j][x-i+1]=i;//竖2
}
}
for(int i=1;i<=x;i++)
{
for(int j=1;j<=x;j++)
System.out.print(a[i][j]+" ");
System.out.println();
}
System.out.println();
}
}
}
解法2
题目思路
javascript代码
let buf = "";
process.stdin.on("readable",function(){
let chunk = process.stdin.read();
if(chunk) buf += chunk.toString();
})
process.stdin.on("end",function(){
let x = buf.split('\n').map(x=>{return parseInt(x)});
for(let n of x)
{
if(n===0)return ;
for(let i = 1; i <= n; i ++)
{
let line = "";
for(let j = 1;j <= n; j ++)
{
line += `${Math.min(i-0,j-0,n-i+1,n-j+1)} `;
}
console.log(line);
}
console.log();
}
})