1. 从方格纸到H字矩阵:理解图形打印的核心逻辑
第一次接触图形打印问题时,很多初学者会感到困惑:如何用代码控制字符在屏幕上的排列?其实这个问题可以类比我们在方格纸上画画的过程。想象你面前有一张n×n的方格纸,每个小格子都有唯一的坐标(i,j),其中i代表行号,j代表列号。我们的任务就是根据特定规则,在每个格子中填入相应的字符。
在H字矩阵问题中,我们需要遵循以下规则:
- 最左边一列(j==1)和最右边一列(j==n)填入竖线"|"
- 正中间一行(i==(n+1)/2)填入横线"-"
- 其余位置全部填入字母"a"
这个看似简单的题目实际上包含了图形打印问题的三个核心要素:
- 二维空间的坐标系统(行和列的循环嵌套)
- 条件判断决定每个位置的输出
- 特殊位置(边界、中线等)的特殊处理
提示:在解决任何图形打印问题时,首先要明确图形的结构特征,将其转化为数学条件表达式,这是解题的关键第一步。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. H字矩阵的完整实现解析
2.1 基础代码结构
让我们先看一个完整的H字矩阵实现代码:
cpp复制#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) { // 行循环
for(int j = 1; j <= n; j++) { // 列循环
if(j == 1 || j == n) {
cout << "|";
}
else if(i == (n+1)/2) {
cout << "-";
}
else {
cout << "a";
}
}
cout << endl; // 每行结束换行
}
return 0;
}
这段代码的工作流程非常清晰:
- 外层循环控制行数(i从1到n)
- 内层循环控制每行的列数(j从1
