C++实现蓝桥杯竞赛题目—搭积木

C++实现蓝桥杯竞赛题目---搭积木的完整攻略

题目描述

假设你们班有很多童鞋正在参加蓝桥杯竞赛,老师突然想了个好玩的游戏:大家一起来玩搭积木,规则如下:每个学生手里都有 $n$ 个积木,编写程序按照如下规则输出:

  • 第一行输出所有积木的高度和;
  • 第二行将所有积木按高度升序输出;
  • 第三行将所有积木按高度降序输出;
  • 第四行随机输出所有积木。

程序实现

首先,因为题目需要输入不定量的积木,我们可以利用 vector 动态存放积木高度:

#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;

int main()
{
    vector<int> blocks;

    // 获取积木数量
    int n;
    cin >> n;

    // 存放积木高度
    for (int i = 0; i < n; i++)
    {
        int height;
        cin >> height;
        blocks.push_back(height);
    }

    // 所有积木高度和
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += blocks[i];
    }
    cout << sum << endl;

    // 按高度升序输出
    sort(blocks.begin(), blocks.end());
    for (int i = 0; i < n; i++)
    {
        cout << blocks[i] << " ";
    }
    cout << endl;

    // 按高度降序输出
    sort(blocks.rbegin(), blocks.rend());
    for (int i = 0; i < n; i++)
    {
        cout << blocks[i] << " ";
    }
    cout << endl;

    // 随机输出
    srand((unsigned int)time(NULL));
    random_shuffle(blocks.begin(), blocks.end());
    for (int i = 0; i < n; i++)
    {
        cout << blocks[i] << " ";
    }
    cout << endl;

    return 0;
}

代码中用到的各种函数的意思如下:

  • vector 是 C++ 中的一种容器,可以动态存放若干个元素;
  • sort 是 C++ 中的排序函数,用于对指定区间内的元素进行排序;
  • srand 是用于设置随机数发生器的种子;
  • random_shuffle 是 C++ 中用于随机重排指定区域内元素顺序的函数。

示例说明

示例1:

输入:

5
3 2 1 4 5

输出:

15
1 2 3 4 5
5 4 3 2 1
4 1 2 5 3

上述代码满足题目要求,可以通过本题。

示例2:

输入:

8
9 7 3 5 4 2 8 1

输出:

39
1 2 3 4 5 7 8 9
9 8 7 5 4 3 2 1
5 8 7 2 3 9 1 4

同样可以通过本题。

总结

本题主要考察的是实现基本算法的能力,以及合理使用 C++ 容器和标准函数库的能力。对于像积木这种需要存储数量不定的数据,我们可以使用 vector 来方便地实现。对于排序和随机重排操作,可以使用标准函数 sortrandom_shuffle 来完成。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现蓝桥杯竞赛题目—搭积木 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MySQL数据库之内置函数和自定义函数 function

    MySQL是一个开源的关系型数据库管理系统,提供了许多内置函数和自定义函数用于操作和处理数据。这些函数可以大大简化SQL查询和数据处理的操作,提高效率和准确性。本文将介绍MySQL数据库中的内置函数和自定义函数,帮助您更好地利用函数来处理和查询数据。 内置函数 MySQL数据库提供了许多内置函数,这些函数可以用来完成各种任务,例如数学计算、字符串处理、日期和…

    C 2023年5月22日
    00
  • C# CLR 中学习 C++关键词extern使用详解

    C# CLR 中学习 C++关键词extern使用详解 什么是extern关键词 extern是一种C++编程语言关键词,也可以在C# CLR中使用。 extern关键词的主要作用是指示编译器外部变量或函数的存在,并告诉编译器外部变量或函数在程序的其他地方定义。此外,extern也被用来在调用C++函数时手动指定函数的调用约定。 使用extern关键词声明外…

    C 2023年5月23日
    00
  • C++随机点名生成器实例代码(老师们的福音!)

    首先,我们需要明确实现这个随机点名生成器的基本思路。我们需要一个名单,这个名单中包含每个学生的姓名信息,然后从这个名单中随机选择一个学生进行点名。因此,我们需要把这个名单存储在程序中,并且要有一个随机数函数来随机选择学生。 接下来,我们需要定义一个学生类,用来存储学生的姓名信息。在这个类中,我们需要定义公有的姓名属性,并且需要定义构造函数和析构函数。 在主函…

    C 2023年5月30日
    00
  • c语言计算三角形面积代码

    下面是C语言计算三角形面积代码的完整攻略。 步骤 步骤1:定义变量 首先,我们需要定义三角形的三条边长变量a、b、c和面积变量s,代码如下: float a, b, c, s; 这里使用了浮点型变量类型float,因为三角形的边长和面积可能是小数。 步骤2:输入变量值 然后,我们需要从用户输入三角形的三条边长,代码如下: printf("请输入三角…

    C 2023年5月24日
    00
  • C语言详解如何应用模拟字符串和内存函数

    C语言是一门广泛应用于系统编程和算法实现的编程语言。其中,模拟字符串和内存函数常常被用于字符串和数据处理。本攻略将详细讲解如何在C语言中实现模拟字符串和内存函数,以及如何应用它们解决实际问题。 一、字符串的模拟 1.1. 什么是字符串 在C语言中,字符串是一个由字符组成的数组,以’\0’结尾。例如,”hello world”是一个字符串,它实际上是一个包含1…

    C 2023年5月23日
    00
  • C++实现STL容器的示例

    实现STL容器需要了解C++的模板和泛型编程。具体实现步骤如下: 1.先定义STL容器的基本结构,以vector为例,定义一个模板类Vector,将模板参数T作为类型参数: template <typename T> class Vector { private: T* data; size_t size; size_t capacity; pu…

    C 2023年5月23日
    00
  • 如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    要判断一个数是否为4的幂次方,可以有以下两种方法: 方法一:使用数学公式进行判断 如果一个正整数n是4的幂次方,那么它可以表示为: n = 4^k 其中k为非负整数。我们可以对n进行以下的操作: 若n为1,则返回true。 若n mod 4不为0,则返回false,因为4的幂次方必定是4的倍数。 对n除以4,得到一个新的数,用同样的方法判断,直到最终结果为1…

    C 2023年5月23日
    00
  • C++实现查壳程序代码实例

    欢迎阅读本文介绍的“C++实现查壳程序代码实例”的攻略指南。 什么是“查壳程序”? 在软件开发中,为了保护软件不被破解,可能会采取加壳的措施。加壳就是在程序原有代码的基础上,添加加密算法来保护程序的安全性。 那么,查壳程序就是用来反向解析加壳程序,获取加壳器信息和原始代码的工具。 使用C++实现查壳程序的步骤 第一步:理解PE文件结构 PE文件概念:PE文件…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部