2023 年 09 月 二级真题(1)--小杨的 X 字矩阵

【题目】

样例输入:

5

样例输出

【解题思路】

图形的输出一定采用双层循环,外层循环控制输出的行数,内层循环控制每一行输出的内容。

图形的输出难点是找每一行输出的某些符号的数量与行号的关系,有时候这种关系不能找到一个统一的公式,需要将图形拆分成几部分分别找规律再输出。

本题可以将图形分成上下两部分输出,上半部分和下半部分的输出是相反的的关系,所以在写完上半部分输出代码后,只需要将控制外层循环的i的取值反向获取即可。

上下对称的图形,中间一行往往要单独输出。

【代码】

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;//输出n行
    cin>>n;
    //第一部分:输出上半部分
    for(int i=1;i<=n/2;i++)
    {
        for(int j=1;j<=i-1;j++)
            cout<<'-';
        cout<<'+';
        for(int j=1;j<=n-i*2;j++)
            cout<<'-';
        cout<<'+';
        for(int j=1;j<=i-1;j++)
            cout<<'-';
        cout<<endl;
    }
    //第二部分:输出中间一行
    for(int i=1;i<=(n-1)/2;i++)
        cout<<'-';
    cout<<'+';
    for(int i=1;i<=(n-1)/2;i++)
        cout<<'-';
    cout<<endl;
    //第二部分:输出下半部分
    for(int i=n/2;i>=1;i--)
    {
        for(int j=1;j<=i-1;j++)
            cout<<'-';
        cout<<'+';
        for(int j=1;j<=n-i*2;j++)
            cout<<'-';
        cout<<'+';
        for(int j=1;j<=i-1;j++)
            cout<<'-';
        cout<<endl;
    }
    return 0;
}

【划重点】

以上思路只是其中的一种解题思路,也欢迎大家留言说一下自己的解题思路。

相关推荐
Hi李耶12 分钟前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_15 分钟前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度
AI科技星24 分钟前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
Henry Zhu1231 小时前
C++17 `weak_from_this` 详解:让对象安全地观察自己
c++
沐籽李1 小时前
HuDiff在抗体人源化项目中的工程化落地
人工智能·算法·aidd·抗体设计
依然范特东1 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
一次旅行3 小时前
RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案
人工智能·算法·机器学习
Wang's Blog3 小时前
AI Agent白手起家29: Few Shot 提示词工程实战
人工智能·算法
June`4 小时前
warp shuffle指令
c++·人工智能·算法·cuda
geovindu4 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法