资源简介 智能算法挑战复赛初中组(总共 4 道题)1. 修复机器 的对话词库错误【题 描述】基于 智能技术的智能陪伴机器 的语 词库被 客的病毒感染了,感染 式是在单词中变成了“heeello” 。空格 字符被替换为 度不固定的数字乱码,请修复它。【输 格式】输 字符串 (字符串中 空格) 。这 是被感染的字符串。【输出格式】输出 对应的正确字符串。【样例输 】(测试数据不包含本样例)Good24565morrrning【样例输出】Good morning答案解析:def fix_infected_string(s):fixed_str = ''prev_char = ''for char in s:if char.isdigit() or char.isspace():continueif char == prev_char:continuefixed_str += charprev_char = charreturn fixed_str# 输 被感染的字符串infected_string = input()# 修复字符串并输出结果fixed_string = fix_infected_string(infected_string)print(fixed_string)在这个示例中,我们定义了 个 fix_infected_string 函数来修复被感染的字符串。函检查以下情况:如果字符是数字或空格,则跳过该字符。如果字符与前 个字符相同,则跳过该字符。这样可以找出被增加了两次的字 。否则,将该字符添加到修复后的字符串中,并更新 prev_char 为当前字符。然后,我们将输 的被感染的字符串传递给 fix_infected_string 函数进 修复,并打请注意,以上示例代码是使 Python 编写的。如果您希望在其他编程语 中实现相同的功2. 定制架 问题【题 描述】李莳花要做 个架 ,把她喜欢的摆件叠放起来,她的每个摆件的位置顺序是固 定的。这个能超过这个宽度,每层架 的 度不 能低于最 的摆件的 度。假设,给出排列好的每个摆要最少多 的架 。【输 格式】输 的第 有 2 个数字, 个是摆件的个数n,和架 的宽度 W。 以下摆件个数 n ,每Hi。【输出格式】输出放置摆件架 的最低 度。【样例输 】(测试数据不包含本样例)5 52 11 21 32 32 2【样例输出】5答案解析:def minimum_shelf_height(n, W, items):heights = [0] * (W + 1) # 记录每个宽度上摆放的最 度for i in range(1, W + 1):max_height = 0for j in range(n):if items[j][0] <= i:max_height = max(max_height, items[j][1] + heights[i - items[j]heights[i] = max_heightreturn heights[W]# 输 摆件个数和架 宽度n, W = map(int, input().split())# 输 每个摆件的宽度和 度items = []for _ in range(n):item_width, item_height = map(int, input().split())items.append((item_width, item_height))# 计算最低架 度并输出结果min_height = minimum_shelf_height(n, W, items)print(min_height)在这个示例中,我们定义了 个 minimum_shelf_height 函数来计算放置摆件所需的最低架 度个宽度上的最 度,并存储在 heights 列表中。在主程序中,我们 先输 摆件的个数 n 和架 的宽度 W。然后,遍历输 每个摆件的宽度和 度,并最后,我们调 minimum_shelf_height 函数计算最低架 度,并将结果打印出来作为输出。请注意,以上示例代码是使 Python 编写的。如果您希望在其他编程语 中实现相同的功能,请根据3. 输出多进制数【题 描述】输 个 于 20 的正整数n,要求按从 到 的顺序输出所有的 n 位 m 进制数, 每个数占 。【输 格式】输 个 于 20 的正整数n,和 个 于 10 的正整数m。【输出格式】按从 到 的顺序输出所有的 n 位 m 进制数,每个数占 。【样例输 】(测试数据不包含本样例)3 2【样例输出】000001010011100101110111答案解析:def print_base_numbers(n, m):max_value = pow(m, n) - 1for i in range(max_value + 1):base_number = format(i, f'0{n}b')print(base_number.replace(# 输 n 和 mn, m = map(int, input().split())# 输出所有 n 位 m 进制数print_base_numbers(n, m)在这个示例中,我们定义了 个 print_base_numbers 函数来按顺序打印出所有的 n 位 m 进制数。的 n 次 减 1。然后,使 个循环从 0 到 max_value,将每个数字转换为 n 位 进制数,并 format 函数确保输1,将所有的 1 替换为 0,得到所需的 m 进制数。最后,打印出每个 m 进制数。在主程序中,我们输 n 和 m,并调 print_base_numbers 函数来输出所有的 n 位 m 进制数。请注意,以上示例代码是使 Python 编写的。如果您希望在其他编程语 中实现相同的功能,请根据4. 在 AI 下棋程序中,计算猫抓 游戏的概率【题 描述】有这样 个游戏:在 个 n*n 的格 棋盘 ,n 是奇数;有两种棋 , 个是只 能横向移动的棋 猫, 在棋盘的正 中央,第 步 将进 上下左右的随机移动。棋 猫在从棋盘的中间 的最左边 向左到右移动 步,第 步是猫位于 棋盘的中间 的最左边格 。请问:在猫移动到棋盘外 前,会有多【输 格式】输 个 于 1 的奇数n,表示棋盘的 。【输出格式】棋 猫抓到棋 的概率。( 数四舍五 保留4 位有效数字) 【样例输 】(测试数据不包含本样例)3【样例输出】0.6667答案解析:def calculate_probability(n):# 创建 个 为n的 维数组, 于保存每个格 上猫抓到 的概率dp = [[0.0] * n for _ in range(n)]# 初始化中 格 上猫抓到 的概率为1dp[n // 2][n // 2] = 1.0# 从中间 最左边开始向右移动for col in range(n // 2 + 1, n):# 每次移动的概率为0.5move_prob = 0.5for row in range(n):# 计算当前格 上猫抓到 的概率cat_prob = 0.0if row > 0:cat_prob += dp[row - 1][col - 1] * move_probcat_prob += dp[row][col - 1] * move_probif row < n - 1:cat_prob += dp[row + 1][col - 1] * move_probdp[row][col] = cat_prob# 统计最后 列格 上猫抓到 的概率total_prob = sum(dp[row][n - 1] for row in range(n))return round(total_prob, 4)# 输 棋盘的 n = int(input())# 计算猫抓到 的概率并输出结果probability = calculate_probability(n)print(probability)在这个示例中,我们使 动态规划解决了问题。 先,我们创建 个 为 n 的 维数组 dp 来保存每然后,我们从棋盘的中间 最左边开始向右移动。对于每个格 ,我们根据上 列格 上猫抓到 的将其保存在 dp 数组中。最后,我们统计最后 列格 上猫抓到 的概率,并将其四舍五 保留四位有效数字作为输出。请注意,以上示例代码是使 Python 编写的。如果您希望在其他编程语 中实现相同的功能,请根据 展开更多...... 收起↑ 资源预览