1 条题解

  • 0
    @ 2026-3-1 18:39:14

    题解:小杨的奇思妙想

    一、题目描述

    小杨想要构造一个 (m \times m) 的N字矩阵,这个矩阵的从左上角到右下角的对角线、第1列和第 (m) 列都是半角加号 +,其余都是半角减号 -

    输入格式

    第一行包含一个正整数 (m)((3 \le m \le 49))。

    输出格式

    输出对应的 (m \times m) N字矩阵。


    二、解题思路

    这道题的核心是按位置判断输出字符,可以通过双重循环遍历矩阵的每一个位置:

    1. 外层循环控制行数 (i)(从 1 到 (m));
    2. 内层循环控制列数 (j)(从 1 到 (m));
    3. 对每个位置 ((i,j)),判断是否满足以下三个条件之一:
      • 是第 1 列:(j == 1)
      • 是第 (m) 列:(j == m)
      • 是主对角线:(j == i) 如果满足任意一个条件,输出 +,否则输出 -
    4. 每一行遍历结束后,输出换行符,保证矩阵格式正确。

    三、参考代码

    #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
    上传者