导航菜单
首页 >  算法挑战赛真题答案  > 【全国青少年信息素养大赛智能算法挑战赛初中组复赛真题卷】

【全国青少年信息素养大赛智能算法挑战赛初中组复赛真题卷】

全国青少年信息素养大赛智能算法挑战赛初中组复赛真题卷

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:修复机器人的对话词库错误

```cpp

#include

#include

#include

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 n >> W;

    std::vector 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 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 n >> W;    std::vector 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 n;    std::cout.precision(4);    std::cout

相关推荐: