資源簡介 智能算法挑戰復賽初中組(總共 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 編寫的。如果您希望在其他編程語 中實現相同的功能,請根據 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫