本文主要是介绍【2023年全国青少年信息素养大赛智能算法挑战赛复赛真题卷】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题
2023全国⻘少年信息素养⼤赛智能算法挑战复赛⼩学组真题
2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题
1. 修复机器人的对话词库错误
【题目描述】
基于人工智能技术的智能陪伴机器人的语言词库被黑客的病毒感染了,感染方 式是在单词中的某个字母被增加了两次,例如“hello”变成了“heeello” 。空格 字符被替换为长度不固定的数字乱码,请修复它。
【输入格式】
输入一行字符串 (字符串中无空格) 。这一行是被感染的字符串。
【输出格式】
输出一行对应的正确字符串。
【样例输入】(测试数据不包含本样例)
Good24565morrrning
【样例输出】
Good morning
2. 定制架子问题
【题目描述】
李莳花要做一个架子,把她喜欢的摆件叠放起来,她的每个摆件的位置顺序是固 定的。这个架子的宽度是 W,每层排放的摆件不能超过这个宽度,每层架子的高度不 能低于最高的摆件的高度。假设,给出排列好的每个摆件的宽度 Wi ,和高度 Hi ,请 计算需要最少多高的架子。
【输入格式】
输入的第一行有 2 个数字,一个是摆件的个数n,和架子的宽度 W。 以下摆件个数 n 行,每行的第一个数是摆件的宽度 Wi 和高度 Hi。
【输出格式】
输出放置摆件架子的最低高度。
【样例输入】(测试数据不包含本样例)
5 5
2 1
1 2
1 3
2 3
2 2
【样例输出】
5
3. 输出多进制数
【题目描述】
输入一个小于 20 的正整数n,要求按从小到大的顺序输出所有的 n 位 m 进制数, 每个数占一行。
【输入格式】
输入一个小于 20 的正整数n,和一个小于 10 的正整数m。
【输出格式】
按从小到大的顺序输出所有的 n 位 m 进制数,每个数占一行。
【样例输入】(测试数据不包含本样例)
3 2
【样例输出】
000
001
010
011
100
101
110
111
4. 在 AI 下棋程序中,计算猫抓老鼠游戏的概率
【题目描述】
有这样一个游戏:在一个 n*n 的格子棋盘里,n 是奇数;有两种棋子,一个是只 能横向移动的棋子猫,一个是可以上下左右移动的棋子老鼠。假设老鼠在棋盘的正 中央,第一步老鼠将进行上下左右的随机移动。棋子猫在从棋盘的中间行的最左边 向棋盘的最右边移动,棋子猫每次移动只能是从左到右移动一步,第一步是猫位于 棋盘的中间行的最左边格子。请问:在猫移动到棋盘外面前,会有多大概率抓到老 鼠?
【输入格式】
输入一个大于 1 的奇数n,表示棋盘的大小。
【输出格式】
棋子猫抓到棋子老鼠的概率。(小数四舍五入保留4 位有效数字) 【样例输入】(测试数据不包含本样例)
3
【样例输出】
0.6667
以下是针对您提供的四个题目的C++解决方案:
### 题目 1:修复机器人的对话词库错误
#include <iostream>#include <string>#include <cctype>int main() {std::string input;std::cin >> input;std::string output = "";for (char ch : input) {if (std::isalpha(ch)) {if (ch == 'l' || ch == 's') {output += 'l';}output += ch;} else if (isdigit(ch)) {int len = ch - '0';for (int i = 0; i < len; ++i) {output += '0' + (input[i] - '0');}}}std::cout << output << std::endl;return 0;}
题目 2:定制架子问题
#include <iostream>#include <vector>#include <algorithm>int main() {int n, W;std::cin >> n >> W;std::vector<std::pair<int, int>> pieces(n);for (int i = 0; i < n; ++i) {std::cin >> pieces[i].second >> pieces[i].first;}std::sort(pieces.begin(), pieces.end());int maxHeight = 0;int currentHeight = 0;for (const auto &piece : pieces) {if (currentHeight + piece.first <= maxHeight) {maxHeight = std::max(maxHeight, currentHeight + piece.first);} else {maxHeight = std::max(maxHeight, piece.first);currentHeight = piece.first;}}std::cout << maxHeight << std::endl;return 0;}
题目 3:输出多进制数
#include <iostream>#include <string>#include <cmath>void printNumber(int n, int m) {std::string digits = "0123456789";std::cout << digits.substr(0, n);for (int i = 1; i < m; ++i) {std::string num = "";for (int j = 0; j < n; ++j) {num += digits.substr((i + j) % m, 1);}std::cout << num << std::endl;}}int main() {int n, m;std::cin >> n >> m;printNumber(n, m);return 0;}
题目 4:在 AI 下棋程序中,计算猫抓老鼠游戏的概率
#include <iostream>#include <cmath>double calculateProbability(int n) {// n is odd,老鼠在棋盘的正中央,猫从中间行的最左边开始int middle = n / 2; // 棋盘的中间行int half = (n - 1) / 2; // 棋盘的一半double catMoves = half; // 猫需要移动的步数double totalMoves = pow(2, half + 1) - 1; // 老鼠可能的移动步数return catMoves / totalMoves;}int main() {int n;std::cin >> n;std::cout.precision(4);std::cout << std::fixed << calculateProbability(n) << std::endl;return 0;}
2023全国⻘少年信息素养⼤赛智能算法挑战复赛⼩学组真题
1.捡⽯头
【题⽬描述】
⼩强在河边捡了 2 块漂亮的⽯头,他想再捡两块⽯头,让这 4 块⽯头的质量正好为 30 ⽄ ,并且新捡的 两块⽯头的质量是介于前两块⽯头的质量之间的数字,请编程 输出第 3 块和第 4 块⽯头的质量 。注: 每个⽯头的重量都是整数,如果找不到合适 的⽯头,则输出 0 0。
【输⼊格式】
输⼊ 2 个数,数与数之间以空格间隔,表示 2 块⽯头的质量。
【输出格式】
输出表示第 3 、4 块⽯头的质量的所有可能结果,每块⽯头质量的数字⽤空格隔开 。多组结果时,按第 3块⽯头质量从⼩到⼤排序分⾏输出。
【样例输⼊】 (测试数据不包含本样例)
1 11
【样例输出】
810
9 9
2.判断数字出现了⼏次
【题⽬描述】
给定一个正整数n ,判断从 1 到这个数本身的所有数中,一共出现了多少次数字
k 。【输⼊格式】
输⼊共 1 ⾏ ,包括一个正整数 n 和一个正整数 k 。(0<n<32767 ,0<k<10) 【输出格式】
输出共 1 ⾏ ,一个整数,表示 1 到 n 之间的所有数 (包括n) ,一共出现了⼏次k 。【样例输⼊】 (测试数 据不包含本样例)
【样例输出】
2
3.滑雪板打包问题
【题⽬描述】
一家新开业的滑雪场,需要采购不同规格的滑雪板,每个滑雪板的 度是不固定的,现在需要把排列好 的滑雪板⽤⽊板做成⽊箱封装好进⾏快递,每次快递的总重 量是有限制的,不能超过重量 G 。只要每 次打包的重量不超过 G ,多个滑雪板可以摞 放在一起,使⽤与最 滑雪板 度相同的两个⽊板进⾏固 定 。假设,给出排列好的 每个滑雪板的重量 Gi ,和 度 Li ,请计算需要最少多 的⽊板才能将所有 的滑雪板 把包好。
【输⼊格式】
输⼊的第一⾏有两个数字,一个是滑雪板的个数,一个是包裹总重量 。 以下滑雪板个数⾏ ,每⾏的第一 个数是滑雪板的重量 Gi 和 度 Li。
【输出格式】
输出需要最少的⽊板的总 度 。注:每次打包需要 2 个⽊板。 【样例输⼊】 (测试数据不包含本样例)
5 5
2 1
1 2
1 3
2 3
2 2
【样例输出】
10
4.统计考试成绩
【题⽬描述】
期末考试结束了,⽼师要统计班⾥学⽣的考试成绩分布, 已知每个同学的考试成绩为在 0 到 100 分之 间的整数 ,设计一个程序 ,输⼊每个同学的成绩,计算出在 平均成绩 (成绩平均值向下取整) 之上的 (⼤于等于平均成绩) 和在平均成绩之下 的 (⼩于平均成绩) 的同学的⼈数。
【输⼊格式】
第一⾏ n 为学⽣成绩个数,0<n<50。
第⼆⾏ , 由空格隔开的每个同学的成绩,为 1 到 100 间的整数 。【输出格式】
两个整数, 由空格隔开,为平均分以上⼈数和平均分以下⼈数 。【样例输⼊】 (测试数据不包含本样例)
12
100 80 93 66 73 50 96 100 84 47 97 71
【样例输出】
5 7
这篇关于【2023年全国青少年信息素养大赛智能算法挑战赛复赛真题卷】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!