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; // 输出了一行元素后,需要输出换行
}
相关推荐
星轨初途3 小时前
LeetCode 热题 100——day10 和为 K 的子数组
开发语言·c++·算法·leetcode
有点。3 小时前
C++广度优先搜索(二)-练习题
c++·算法·宽度优先
Q741_1474 小时前
TcpDump 使用笔记
网络·c++·笔记·测试工具·tcpdump
程序猿编码4 小时前
不用PyTorch,不用CUDA,我用C++手写了一个能跑GPT和Whisper的推理库
c++·pytorch·gpt·大模型·whisper
MC皮蛋侠客4 小时前
TDengine C++ 系列(1):全景与最小闭环——从时序数据到第一个 C++ 读写
大数据·c++·tdengine
MC皮蛋侠客4 小时前
TDengine C++ 系列(5):C/C++ 连接器——连接管理与查询 API
c语言·c++·tdengine
MC皮蛋侠客4 小时前
TDengine C++ 系列(8):流式计算与最新值缓存——库内实时处理
c++·缓存·tdengine
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧13 小时前
C++学习:基础知识的掌握
c++·visualstudio
C++ 老炮儿的技术栈18 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
new_zhou19 小时前
C++ 项目 AI 协作指南(Windows / MSVC 环境)
c++·人工智能·windows