题解
2026-02-05 22:15:55
发布于:浙江
14阅读
0回复
0点赞
题目解析
- 输入输出:输入一个奇数 ,输出 行,每行 个字符,构成一个 的矩阵;其中两条对角线(从左上到右下、从右上到左下)为
+,其余位置为-。 - 数据范围: 且 为奇数,矩阵规模较小。
- 复杂度要求:时间复杂度 ,最多输出 个字符;空间复杂度 ,无需存储整个矩阵,可直接输出。
- 算法知识点:
模拟、矩阵遍历、坐标性质判断
思路解析
- 遍历矩阵:使用双重循环,外层控制行号 (从 到 ),内层控制列号 (从 到 ),依次确定每个位置的字符。
- 对角线判定:利用二维坐标的几何性质判断当前位置是否在 形的两条对角线上:
- 主对角线(左上到右下):满足 (行号等于列号)
- 副对角线(右上到左下):满足 (行号与列号之和等于矩阵维度加1)
- 输出字符:若当前位置满足任一上述条件,则输出
+;否则输出-。每行结束后输出换行。
完整代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// 遍历矩阵的每一行
for (int i = 1; i <= n; i++) {
// 遍历当前行的每一列
for (int j = 1; j <= n; j++) {
// 关键判断:主对角线(i==j) 或 副对角线(i+j==n+1)
if (i == j || i + j == n + 1) {
cout << "+";
}
else {
cout << "-";
}
}
cout << endl; // 每行结束换行
}
return 0;
}
这里空空如也

有帮助,赞一个