思路: 模拟
画图。可以发现这个图分为四部分,最内层的 '.' ,'o' ,'*' 和最外层的 '.' 。
- 先考虑最内层的
'.' ,其一定满足是在最中间的,如果下标从 0 开始,即 l r 都在 [2n,3n−1] 这个位置
- 接着考虑
'o' ,距离最内层的 '.' 的两个方向,x 方向和 y 方向都小于等于 n ,则说明是 'o'
题目内容
给定一个正整数 n,需要生成一个边长为 5n 的方形字符矩阵,行与列的编号均从 0 到 5n−1。
定义中心矩形区域 S={(i,j)∣2n≤i≤3n−1, 2n≤j≤3n−1}。矩阵中每个位置 (i,j) 按照以下规则填入字符:
- 若 (i,j)∈S,则填充字符
'.'。
- 否则,计算该位置到 S 的“垂直最近距离” dv=min(∣i−2n∣,∣i−(3n−1)∣) 与“水平最近距离” dh=min(∣j−2n∣,∣j−(3n−1)∣)。若 max(dv,dh)≤n,则填充字符
'o'。
- 否则,若 min(i,5n−1−i)+min(j,5n−1−j)<n,则填充字符
'.'。
- 其余位置填充字符
'*'。
参数 n 满足 1≤n≤10。