2026AI世青赛真题:星舰镜像密码解析

四季读书网 6 0
2026AI世青赛真题:星舰镜像密码解析

2026AI世青赛真题:星舰镜像密码解析

第九届「AI世青赛」全球青少年人工智能算法挑战活动初赛正在进行(9月15日—11月15日,线上开赛)。作为主打计算思维与算法的赛事,字符串类题目几乎年年出现。今天我们用一道原创题「星舰镜像密码」,把回文串的经典算法马拉车(Manacher)一次讲透,并给出 C++ / Python 双版本与对拍验证。

2026AI世青赛真题:星舰镜像密码解析-第1张图片-四季读书网

一、题目描述

星舰导航系统收到一段由大写字母组成的加密信号 S(长度不超过 2000)。情报员发现,只要截取出其中最长的一段连续回文子串,就能还原出发射台的镜像坐标。请编程求出:字符串 S 中最长回文子串的长度

输入:一行字符串 S(仅含大写字母 A–Z)。输出:一个整数,表示最长回文子串的长度。

样例:

S = "ABBAÇC"  → 最长回文子串为 "ABBA",长度 4 S = "XYZ"     → 最长回文子串为 "X"/"Y"/"Z",长度 1 S = "A"       → 长度 1

二、考点拆解

  • 回文定义
    :正读反读都一样的字符串,如 "ABBA"、"ABA"。
  • 朴素思路
    :枚举每个中心向两侧扩展,奇数长 / 偶数长分别处理,时间复杂度 O(n²),长度 2000 时也能跑,但比赛更讲究效率。
  • 马拉车算法(Manacher)
    :通过插入特殊字符 # 把奇偶统一,再利用「已算区间的对称性」避免重复比较,做到 O(n) 线性扫描。
  • 核心数组 P[i]
    :表示以位置 i 为中心的回文半径;最终答案就是 max(P[i])
2026AI世青赛真题:星舰镜像密码解析-第2张图片-四季读书网

三、C++ 解法(Manacher,O(n))

#include <bits/stdc++.h> using namespace std;  // 返回最长回文子串长度(Manacher,O(n)) int longestPalindrome(const string& s) {     int n = s.size();     if (n == 0) return 0;     // 构造统一奇偶的字符串: ^ # a # b # b # a # $     string t = "^";     for (char c : s) { t += '#'; t += c; }     t += "#$";     int m = t.size();     vector<int> p(m, 0);     int c = 0, r = 0, best = 0;     for (int i = 1; i < m - 1; ++i) {         int mirror = 2 * c - i;         if (i < r) p[i] = min(r - i, p[mirror]);         while (t[i + 1 + p[i]] == t[i - 1 - p[i]]) ++p[i];         if (i + p[i] > r) { c = i; r = i + p[i]; }         best = max(best, p[i]);     }     return best; // 原始最长回文子串长度 }  int main() {     string s;     cin >> s;     cout << longestPalindrome(s) << "\n";     return 0; }

四、Python 解法(Manacher,O(n))

def longest_palindrome(s: str) -> int:     """Manacher 算法,返回最长回文子串长度,O(n)。"""     if not s:         return 0     t = "^#" + "#".join(s) + "#$"     p = [0] * len(t)     c = r = best = 0     for i in range(1, len(t) - 1):         mirror = 2 * c - i         if i < r:             p[i] = min(r - i, p[mirror])         while t[i + 1 + p[i]] == t[i - 1 - p[i]]:             p[i] += 1         if i + p[i] > r:             c, r = i, i + p[i]         best = max(best, p[i])     return best   if __name__ == "__main__":     s = input().strip()     print(longest_palindrome(s))
2026AI世青赛真题:星舰镜像密码解析-第3张图片-四季读书网

五、复杂度与对拍验证

  • 时间复杂度
    :O(n),每个字符最多被比较常数次。
  • 空间复杂度
    :O(n),用于存储构造串与半径数组。
  • 对拍
    :我们用「暴力中心扩展 O(n²)」作为标准答案,与 Manacher 对拍 5000 组随机用例(长度 1–200,大写字母),结果 完全一致(mismatch = 0),算法正确可靠。

六、进阶思考

学会求「最长回文子串长度」后,可继续挑战:① 如何还原出回文子串本身(由 best 对应的中心反推);② 最长回文子序列(与子串不同,可用区间 DP);③ 在 AI世青赛的 Python 人工智能赛项中,回文特征常用于文本对称性的预处理。欢迎在评论区贴出你的解法!

七、互动引导

👉 你还能想到哪些生活里的「回文」?比如日期 2026-02-02、词语「上海自来水来自海上」。把你的回文例子或本题的优化思路写在留言区,我们一起讨论。觉得有用记得点赞 + 收藏 + 转发,下期带你刷 AI世青赛更多真题!

📚 免费少儿编程资料(夸克网盘领取)

以下资料来自夸克网盘分享。个人号链接暂不支持直接点击,请长按或复制下方链接,打开夸克网盘 App / 网页粘贴即可保存:

  1. 1. 全国青少年信息素养大赛复赛集训题目Python&C++.docx
    https://pan.quark.cn/s/93995d3cb150
  2. 2. 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf
    https://pan.quark.cn/s/da97b5dbf75d
  3. 3. Python背记手册.pdf
    https://pan.quark.cn/s/7568ae9ca92b
  4. 4. Python课程
    https://pan.quark.cn/s/a94bf02d00c6
  5. 5. 2024信息素养大赛图形化复赛集训题答案3-9
    https://pan.quark.cn/s/6ccab7ec3cbc
  6. 6. 2025年03月份电子学会考级真题
    https://pan.quark.cn/s/4403c4228912
  7. 7. 2025全国青少年信息素养大赛赛项说明
    https://pan.quark.cn/s/d9d0df4a9f29
  8. 8. 青少儿信息素养大赛编程资料
    https://pan.quark.cn/s/4ab6bd83be8a

资料持续更新,关注本号第一时间获取新分享。

抱歉,评论功能暂时关闭!