B3865 [GESP202309 二级] 小杨的 X 字矩阵

· · 题解

欢迎大家报名洛谷网校的课程,期待和大家一起进步!

:::align{center} :::

思路分析

根据题意,当给定整数为 n 时,输出为 n \times n 的矩阵,所以我们可以考虑使用双重循环来解决,并根据行号 i 和列号 j(这里行号和列号都从 1 开始)之间的关系来决定在每个位置填充 +- 符号。

通过观察样例我们发现,满足以下两个条件之一,则在当前位置输出 + 符号;否则输出 - 符号。

  1. i == j,即处于主对角线上。
  2. i + j == n + 1,即处于副对角线(从右上到左下)的位置。

其次,我们需要注意每一行符号输出结束后,添加一个换行符(endl),确保下一行从新行开始。

核心代码

外层循环变量 i 代表行号,从 1 循环到 n。内层循环变量 j 代表列号,从 1 循环到 n。\ 判断是否在对角线上,如果是则输出 + 符号;否则输出 - 符号:

//判断是否在对角线上
if (i == j || i + j == n + 1)
{
    cout << '+';
}
else
{
    cout << '-';
}