18年省赛蓝桥杯-等腰三角形

题目描述

本题目要求你在控制台输出一个由数字组成的等腰三角形。

具体的步骤是:

  1. 先用 1,2,3... 的自然数拼一个足够长的串

  2. 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。

比如,当三角形高度是 8 时,如下图:

 输入描述

输入一个正整数 n(3<n<300),表示三角形的高度。

输出描述

输出对应的三角形。

输入输出样例

输入;

5

输出:

....1
...2.1
..3...2
.4.....1
567891011

输入:

8

输出:

.......1
......2.1
.....3...8
....4.....1
...5.......7
..6.........1
.7...........6
891011121314151

 注:考试原题中给了多组数据,但在蓝桥云课的题库里只提供了一组

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

解法思路 

  1. 看输出:由点和数字组成,并且每一行点的个数加数字的个数不一样,所以不能用二维数组存储。
  2. 关于点出现的位置:对于前面那块点:前n行都有,并且递减,直至为0。对于中间的点:除了第一行和最后一行,其余行都有,并且是  2*行数 - 3  个。
  3. 用string存储数字,因为到了10及以上要把个位和十位、百位(100及以上)拆开,用循环控制点的输出
  4. 对于输出数字,由于三角形左半边的数字是顺序输出,右半边的数字是逆序输出,所以设头尾指针来控制数字输出
  5. 通过找数学规律可发现:字符串里有效数字长度为4n-4(但字符串下标是从0开始的,所以尾指针设在4n-5),最后一行数字数量是2n-1

代码

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    string s;
    for(int i = 1; i <= 300; i++)//将数字1到300存储到string里
    {
        s += to_string(i);//数字转字符->to_string()
    }

    int l = 0;//字符串头指针
    int r = 4*n - 5;//字符串有效内容的尾指针

    for(int i = 1; i <= n; i++) //n行
    {
        int temp = n-i;//三角形每行第一个数字前面有temp个点
        while(temp > 0)//输出点
        {
            cout << ".";
            temp--;
        }
        if(i == 1)//当在第一行时,只有一个数字,需特判
        {
            cout << s[l] <<endl;
            l++;
        }
        else if(i == n)//当在最后一行时,全是数字,需特判
        {
            for(int j = 0; j < 2*n - 1; j++)//循环输出数字
            {
                cout << s[l];
                l++;
            }
        }
        else//除了第一行和最后一行外,剩下的行数都是两个数字
        {
            cout << s[l];//输出第一个数字
            l++;
            for(int j = 0; j < 2*i - 3; j++)//输出两个数字之间的点数
            {
                cout << ".";
            }
            cout << s[r] <<endl;//输出第二个数字并换行
            r--;
        }
    }
    return 0;
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 12:10:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 12:10:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 12:10:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 12:10:03       18 阅读

热门阅读

  1. 基于单片机的智能交通控制系统研究

    2024-02-21 12:10:03       28 阅读
  2. ASP.NET Core 6 (.NET 6) 快速开发简单登陆和登出功能

    2024-02-21 12:10:03       22 阅读
  3. ARP攻击原理

    2024-02-21 12:10:03       27 阅读
  4. MYSQL 根据条件假删除多余的重复数据

    2024-02-21 12:10:03       27 阅读
  5. 面试浏览器框架八股文十问十答第三期

    2024-02-21 12:10:03       32 阅读
  6. package.json文件详解

    2024-02-21 12:10:03       35 阅读
  7. 纯css实现文字左右循环滚动播放效果

    2024-02-21 12:10:03       28 阅读
  8. 有哪几种行为会导致服务器被入侵

    2024-02-21 12:10:03       28 阅读
  9. 【Spring Boot Bean 注入详解】

    2024-02-21 12:10:03       25 阅读
  10. 12.27 校招 实习 内推 面经

    2024-02-21 12:10:03       35 阅读
  11. 编程笔记 Golang基础 011 控制台输入与输出

    2024-02-21 12:10:03       26 阅读