GESP 23年9月2级 小杨的X字矩阵

【题目链接】

一本通 4015 小杨的X字矩阵

洛谷 B3865 小杨的X字矩阵


【题目考点】

  1. 循环结构(嵌套);

  2. 输出图形;

  3. 分支结构;


【解题逻辑】

解法1:

  1. 通过嵌套循环控制图形的行数与列数:
  • 外层循环控制图形的行数
  • 内层循环控制图形的列数
  1. 观察图形规律,确定对角线位置:
  • 左对角线:行列号相等 (i==j);
  • 右对角线:行号 + 列号 = n+1;(起点下标+结束下标)
  1. 循环判断当前行列位置,若在对角线位置则输出 '+',否则输出 '-';

解法2:

1.通过嵌套循环控制图形的行数与列数:

  • 外层循环控制图形的行数
  • 内层循环控制图形的列数
  1. 定义两个游标变量记录每行要输出 '+' 的列坐标,左游标初始为 1,右游标初始为 n;

  2. 循环判断当前列号是否等于游标值,相等则输出 '+',否则输出 '-';

  3. 每行输出结束后,左游标自增 1,右游标自减 1,匹配对角线偏移规律;


【题解代码】

解法1:

  1. 输入1个整数:图形的行列数;
cpp 复制代码
int n;
cin>>n;
  1. 循环控制图形的行数与列数;
cpp 复制代码
for(int i=1;i<=n;i++){ // 一共n行
    for(int j=1;j<=n;j++){ // 每行n列
        if(i==j || i+j==1+n){ // 如果行号与列号相等 或 行号+列号与n+1相等
            cout<<'+'; // 代表在做左对角线上,输出-
        }
        else{
            cout<<'-'; // 否则输出'+'
        }
    }
    cout<<endl; // 输出了一行元素后,需要输出换行
}

解法2:

  1. 输入1个整数:图形的行列数;
cpp 复制代码
int n;
cin>>n;
  1. 定义变量作为游标,记录左对角线与右对角线开始的位置;
cpp 复制代码
int l=1,r=n; 
  1. 循环控制图形的行数与列数;
cpp 复制代码
for(int i=1;i<=n;i++){ // 一共n行
    for(int j=1;j<=n;j++){ //每行n列
        if(j==l || j==r){ // 如果列号与左游标 或 右游标相同
            cout<<'+'; // 代表在对角线上
        }
        else{
            cout<<'-'; 
        }
    }
    // 下一行的游标更新
    l++;
    r--;
    cout<<endl; // 输出了一行元素后,需要输出换行
}
相关推荐
越甲八千13 小时前
STL stack为何没有迭代器
c++
从零开始的代码生活_15 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸15 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++
GIS阵地15 小时前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
王维同学16 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
程序员Rock16 小时前
上位机开发-MODBUS面试常见问题
c语言·c++·面试·职场和发展·上位机
_wyt00117 小时前
完全背包问题详解
c++·背包dp
皓月斯语18 小时前
B3842 [GESP202306 三级] 春游 题解
数据结构·c++·算法·题解
CedarQR19 小时前
万字长文:从零在 RK3588 上部署 PaddleSpeech 中文 TTS 全流程(FastSpeech2 + HiFiGAN)
开发语言·c++·嵌入式硬件·ubuntu·json
萌动的小火苗19 小时前
嵌入式开发中的栈与队列:任务调度为什么依赖数据结构
数据结构·c++·单片机·嵌入式硬件