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
来方便地实现。对于排序和随机重排操作,可以使用标准函数 sort
和 random_shuffle
来完成。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现蓝桥杯竞赛题目—搭积木 - Python技术站