测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A17091. 苗族织锦纹样生成

填空题 中等

题目描述

苗族织锦纹样生成

题目描述

苗族织锦以精美对称纹样闻名,工匠常以数字规律设计图案。现给定一个正整数n(奇数),请生成n行n列的织锦纹样矩阵:矩阵中心为数字1,向外每层数字依次递增1,形成回形纹样,还原苗族织锦的对称美学。

输入格式

输入一个奇数n(3≤n≤9),表示织锦矩阵的边长。

输出格式

输出n行,每行n个数字,数字间用空格分隔。

参考答案

#include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; int center = n / 2; // 中心索引(整数除法,对于奇数n有效) for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { // 计算当前位置到中心的切比雪夫距离,再加1得到数字 int value = max(abs(i - center), abs(j - center)) + 1; cout << value; if (j < n - 1) cout << ' '; } cout << endl; } return 0; }

答案解析

1. 确定矩阵中心位置,坐标为 (n//2, n//2)。

2. 从最外层到最内层逐层填充数字,层数由距离边界最近的距离决定。

3. 每一层的数字值等于该层到边界的步数加1,中心层为1。

4. 对于每个位置 (i, j),计算其所在层:min(i, j, n-1-i, n-1-j) 得到层数索引。

5. 将该层索引转换为对应数字,即 层数索引倒序递增,从外向内每层加1。

6. 遍历矩阵每个位置,根据上述规则填入对应数字。

7. 按行输出矩阵,每行数字以空格分隔。 知识点 编写循环结构的程序、循环结构嵌套、多层循环结构、数组的遍历、基本的输入输出方法、变量的定义、变量的使用、基本的运算语句、编写循环结构的程序、循环结构嵌套、数组的遍历、基本的输入输出方法、变量的定义、变量的使用、基本的运算语句、常用数学函数

上一题 下一题