1 条题解
-
0
题解:小杨的奇思妙想
一、题目描述
小杨想要构造一个 (m \times m) 的N字矩阵,这个矩阵的从左上角到右下角的对角线、第1列和第 (m) 列都是半角加号
+,其余都是半角减号-。输入格式
第一行包含一个正整数 (m)((3 \le m \le 49))。
输出格式
输出对应的 (m \times m) N字矩阵。
二、解题思路
这道题的核心是按位置判断输出字符,可以通过双重循环遍历矩阵的每一个位置:
- 外层循环控制行数 (i)(从 1 到 (m));
- 内层循环控制列数 (j)(从 1 到 (m));
- 对每个位置 ((i,j)),判断是否满足以下三个条件之一:
- 是第 1 列:(j == 1)
- 是第 (m) 列:(j == m)
- 是主对角线:(j == i)
如果满足任意一个条件,输出
+,否则输出-;
- 每一行遍历结束后,输出换行符,保证矩阵格式正确。
三、参考代码
#include<bits/stdc++.h> using namespace std; int main(){ int n; // 这里的n对应题目中的m,代表矩阵的大小 cin >> n; for(int i = 1; i <= n; i++){ // 遍历每一行 for(int j = 1; j <= n; j++){ // 遍历该行的每一列 // 判断是否是第1列、第n列或主对角线 if(j == 1 || j == n || j == i){ cout << "+"; }else{ cout << "-"; } } cout << endl; // 一行结束后换行 } return 0; }💖 题解整理不易,如果对你有帮助的话,麻烦点个赞鼓励一下吧~ 💖
- 1
信息
- ID
- 575
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 4
- 上传者