2024年12月蓝桥杯蓝桥C++(STEMA)中/高级
STEMA
2024
2025-06-10 10:35:24
68次
一、单选题
运行以下程序,输出的结果是( )。
int x(int arr[], int n)
{
int ans = 0;
for (int i = 0; i < n - 1; i++)
{
int m = i;
for (int j = i + 1; j < n; j++)
{
if (arr[j] < arr[m])
m = j;
}
if (m != i)
{
int temp = arr[i];
arr[i] = arr[m];
arr[m] = temp;
ans++;
}
}
return ans;
}
int main()
{
int arr[] = {64, 25, 12, 22, 11, 90, 34};
cout << x(arr, 7) << endl;
for(int i = 0; i < 7; i++)
cout << arr[i] << " ";
return 0;
} | A. 4 90 64 34 25 22 12 11 |
B. 5 11 12 22 25 34 64 90 |
| C. 6 90 64 34 25 22 12 11 |
D. 6 11 12 22 25 34 64 90 |
【知识点】 蓝桥杯C++中/高级
二、编程题
彩色气球
题目描述:
将 n 个气球排成一行,其中每个气球的颜色用数字表示,1 表示红色,2 表示绿色,3 表示蓝色。我们需要移除一些气球,使得任意相邻的两个气球颜色都不同。请计算最少需要移除多少个气球。
例如:n = 8,8 个气球的颜色依次为 1,1,1,3,2,2,3,1。
最少需要移除 3 个气球,可以使得任意相邻的两个气球颜色都不同,其中一种方案:
移除第 2 个、第 3 个和第 6 个气球。
移除后气球颜色依次为 1,3,2,3,1。
输入描述:
第一行输入一个整数 n(1≤n≤5000),表示气球的数量;
第二行输入 n 个整数(1≤整数≤3),依次表示这一行气球的颜色,红色为 1,绿色为 2,蓝色为 3,整数
之间以一个空格隔开。
输出描述:
输出一个整数,表示最少需要移除的气球数量。
样例输入:
8 1 1 1 3 2 2 3 1
样例输出:
3
【知识点】 蓝桥杯C++中/高级
购买商品
题目描述:
在线商城规定,当所购买商品的总价格大于等于 300 元时,免除运费;否则,需要再支付 10 元的运费。
乐乐通过在线商城购买了 n 件商品,且已知每件商品的价格,请计算乐乐一共需要支付多少元。
例如:n = 3,3 件商品的价格分别为 10、20、30,总价格为 60 元,小于 300 元,需要额外支付 10元的运费,所以乐乐一共需要支付 70 元(70 = 60 + 10)。
输入描述:
第一行输入一个整数 n(1≤n≤50),表示乐乐购买商品的数量;
第二行输入 n 个整数(1≤整数≤100),分别表示每件商品的价格,整数之间以一个空格隔开。
输出描述:
输出一个整数,表示乐乐一共需要支付多少元。
样例输入:
3 10 20 30
样例输出:
70
【知识点】 蓝桥杯C++中/高级
取糖果
题目描述:
圣诞节时,乐乐进入了一个神奇的糖果屋,糖果屋中有 n 个罐子,每个罐子中都有若干颗糖果。糖果屋的主人为了欢迎远道而来的乐乐,让乐乐感受到糖果屋的甜蜜,允许乐乐拿取 k 次糖果,拿取规则如下:
1)每次可以从任意一个罐子中拿取一颗糖果;
2)每次拿取糖果时能够获得甜蜜值,获得的甜蜜值为拿取前这个罐子中糖果的数量。
现给定两个整数 n 和 k,以及 n 个罐子中糖果的数量。已知乐乐初始的甜蜜值为 0,请计算按照规则他能够获得的最大甜蜜值。
例如:n = 3,k = 4,3 个罐子中糖果数量依次为 10,5,11,能够获得最大甜蜜值的拿取方式如下:
第一次拿取第 3 个罐子中的一颗糖果,获得的甜蜜值为 11,拿取后 3 个罐子中糖果数量依次为 10,5,10;
第二次拿取第 1 个罐子中的一颗糖果,获得的甜蜜值为 10,拿取后 3 个罐子中糖果数量依次为 9,5,10;
第三次拿取第 3 个罐子中的一颗糖果,获得的甜蜜值为 10,拿取后 3 个罐子中糖果数量依次为 9,5,9;
第四次拿取第 1 个罐子中的一颗糖果,获得的甜蜜值为 9,拿取后 3 个罐子中糖果数量依次为 8,5,9;
最终获得的最大甜蜜值为 40(11 + 10 + 10 + 9)。
输入描述:
第一行输入两个正整数 n,k(1≤n≤105,1≤k≤109),分别表示糖果屋中罐子的数量以及乐乐可以拿取糖果的次数;
第二行输入 n 个整数(1≤整数≤109),表示每个罐子中糖果的数量,整数之间以一个空格隔开。
数据保证,所有罐子的糖果总数大于 k。
输出描述:
输出一个正整数,表示乐乐能够获得的最大甜蜜值。
样例输入:
3 4 10 5 11
样例输出:
40
【知识点】 蓝桥杯C++中/高级
魔法项链
题目描述:
魔法师艾莉有一条由 n 颗宝石组成的项链,这些宝石围成一圈。每颗宝石用字符 'A' 或字符 'B' 表示,'A' 表示魔力宝石,'B' 表示普通宝石。
艾莉可以利用项链中 3 颗相邻的魔力宝石来施展一次魔咒。施展魔咒后,这 3 颗宝石就会变为普通宝石,同时艾莉的魔力值增加 1 点。
给定一个字符串 S,表示宝石项链,第一个字符和最后一个字符表示的宝石位置相邻。请计算艾莉最多能获得多少点魔力值。
例如:n = 11,S = "AABAAABABAA",第一个字符表示第 1 颗宝石,第二个字符表示第 2 颗宝石......以此类推,项链如下图所示:

艾莉可以按照以下方案来施展魔咒增加魔力值:
1)利用第 4 颗、第 5 颗和第 6 颗宝石施展一次魔咒,施展后项链状态如下:

2)利用第 1 颗、第 2 颗和第 11 颗宝石施展一次魔咒,施展后项链状态如下:

此时,项链中没有 3 颗相邻的魔力宝石,无法再施展魔咒,故艾莉最多可以获得 2 点魔力值。
输入描述:
第一行输入一个整数 n(5≤n≤1000),表示项链中宝石的总数;
第二行输入一个长度为 n 的字符串 S,S 仅包含字符 'A' 和 'B','A' 表示魔力宝石,'B' 表示普通宝石。
输出描述:
输出一个整数,表示艾莉最多可以获得多少点魔力值。
样例输入:
11 AABAAABABAA
样例输出:
2
【知识点】 蓝桥杯C++中/高级
