第三章:图论杀局,临淄风云
一眼春秋,望穿风云。
第三章:图论杀局,临淄风云
第一幕:急报惊变,算法反噬
暮色如血,马车在官道上飞驰,车轮碾起滚滚烟尘。
车内,姬玄握着临淄急报的手微微颤抖。竹简上只有八个字,却字字惊心:
“王遭反噬,危,速归,忌”
“田忌将军的笔迹,”姬玄声音沙哑,“父王…怎会算法反噬?”
芈月凝眉:“齐王修的是《齐民算法》,以稳著称,按理不该…”
“除非有人动了手脚。”姬玄眼中寒光一闪,“我离城不过五日,父王就出事…太巧了。”
车外,田忌策马并行:“殿下,太医诊断,大王中的是‘递归栈溢出毒’——有人在大王修炼的算法典籍中,植入了无限递归陷阱。”
“无限递归…”姬玄闭目,脑中飞速分析,“需要《九章算法》中的‘栈帧修复术’…但第一卷中并无此术。”
芈月急道:“那怎么办?” “第二卷,”姬玄睁眼,“《九章算法》第二卷‘方程’,专解异常状态。但第二卷…在魏国算法库。”
田忌脸色一变:“魏国?庞涓的魏国?”
话音未落——
“咻咻咻!”
前方官道两侧树林,箭如雨下!
“敌袭!结阵!”田忌大吼。
三百齐兵瞬间结成圆阵,盾牌高举,箭矢叮当落下。
但这不是普通箭矢——箭头上刻着算法符文,落地即触发!
“轰!轰!轰!”
地面炸开,符文交织成巨型有向图,将车队困在中央!
姬玄掀开车帘,瞳孔骤缩。
前方官道上,庞涓摇扇而立,笑容温和如旧。他身旁站着八名黑袍阵师,各持算筹,正在构建阵法。
“庞先生,”姬玄冷冷道,“这就是魏国的待客之道?”
庞涓拱手:“七王子误会。庞某此行,是为…借《九章算法》一观。只要殿下交出玉简,立刻放行,还赠‘方程卷’救齐王。”
“若我不给呢?” “那…”庞涓笑容转冷,“只好请殿下…永远留在此地了。”
他扇子一挥:“起阵!”
八名阵师同时划动算筹,空中浮现巨大光图——
【图论杀阵·最短路径封锁】
**【描述】:以车队为起点,临淄为终点,官道为边,设权重障碍】
**【效果】:所有从起点到终点的路径,权重皆被修改为无穷大】
【实质】:让你们找不到任何可行回家之路】
姬玄瞬间看透:“你想用负权环修改边权重,使所有路径不可达?”
“殿下果然通透。”庞涓笑道,“此阵名‘狄杰斯特拉之困’——任你算法再高,找不到最短路径,就只能困死阵中。”
田忌怒吼:“庞涓!你魏国要与我齐国开战吗?!”
“开战?”庞涓摇头,“不不,这只是…算法切磋。姬玄殿下若破不了阵,便是学艺不精,死于阵中,与我魏国何干?”
他顿了顿:“当然,若殿下愿归顺魏国,庞某可亲自护送殿下回临淄,还奉上《九章算法·第二卷》。”
赤裸裸的威胁。
第二幕:破阵之思,最短路径之争
姬玄跳下马车,走向阵法边缘。
地面上的有向图复杂无比:
- 节点:三十六处关键路口
- 边:七十二段官道
- 初始权重:道路长度(已知)
- 当前权重:部分边被修改为无穷大(∞)
芈月跟上来:“此阵用狄杰斯特拉算法(Dijkstra)原理,修改边权破坏连通性…可有解法?”
“有,”姬玄盯着阵法,“狄杰斯特拉算法有两个弱点:一、不能处理负权边;二、贪心选择可能不是全局最优。”
他大脑飞转:“庞涓引入‘负权环’,让某些边权重临时变负,诱导算法走错路…但负权环本身,就是破绽。”
田忌急道:“殿下,如何破?强冲吗?”
“强冲必死,”姬玄摇头,“此阵隐含‘优先级队列’——谁先动,谁先被重点攻击。”
他盘膝坐下,取出玉笔,在地上快速推演。
第一步:建模 将三十六节点编号,七十二边列出,初始权重记为w₀。
第二步:检测负权环 “狄杰斯特拉怕负权…那就用贝尔曼-福特算法(Bellman-Ford)!”姬玄眼中精光一闪。
贝尔曼-福特可处理负权,且能检测负权环!
他快速写出算法框架:
class 路径破解 {
int[] 最短距离;
int[] 前驱节点;
boolean 贝尔曼福特(int 节点数, 边[] 边集, int 起点) {
最短距离 = new int[节点数];
Arrays.fill(最短距离, Integer.MAX_VALUE);
最短距离[起点] = 0;
// 松弛操作 V-1 轮
for (int i = 1; i < 节点数; i++) {
for (边 e : 边集) {
if (最短距离[e.起点] != Integer.MAX_VALUE
&& 最短距离[e.起点] + e.权重 < 最短距离[e.终点]) {
最短距离[e.终点] = 最短距离[e.起点] + e.权重;
前驱节点[e.终点] = e.起点;
}
}
}
// 检测负权环:再松弛一轮,若还能更新,则有负权环
for (边 e : 边集) {
if (最短距离[e.起点] != Integer.MAX_VALUE
&& 最短距离[e.起点] + e.权重 < 最短距离[e.终点]) {
return true; // 存在负权环
}
}
return false;
}
}
第三步:逆向利用 “检测到负权环后…”姬玄嘴角微翘,“不是消除它,而是放大它!”
芈月不解:“放大?” “对。狄杰斯特拉算法遇负权环会崩溃,但如果我们主动在环上循环,积累‘负权值’,就能在某个节点实现权重归零甚至变负,从而创造新路径!”
这是险招——可能被负权环反噬,神魂俱伤。
但姬玄别无选择。
第三幕:以身试阵,负权环中的舞蹈
“田将军,”姬玄起身,“我需要八个懂基本算法士兵,每人持一面阵旗,按我指令移动。”
“殿下不可!”田忌急道,“您亲自入阵太危险!”
“父王等不起。”姬玄看向芈月,“公主,若我失败…你带《九章算法》走,救齐王。”
芈月咬唇:“我陪你入阵。”
“不行,此阵凶险…”
“正因凶险,才需两人。”芈月拔出佩剑,“递归可破循环,我的‘递归斩’或能切断负权环。”
姬玄看着她坚定的眼神,终于点头。
两人并肩踏入阵法。
庞涓在阵外冷笑:“自投罗网。”
阵法内,天地变幻。
官道消失,取而代之的是悬浮的节点平台和光影桥梁。每座桥梁上都标着权重数字,部分显示为“∞”。
姬玄踏上起点平台:“第一段路,权重5,正常。”
他走过,桥梁稳固。
“第二段,权重∞…”姬玄停步,“被庞涓修改了。绕路。”
但绕路需走第三条边,权重3,可通往的第四节点…也有∞边阻隔。
“果然全被封锁了。”芈月凝神感应,“但我感应到…东北方有微弱负权波动。”
“负权环所在!”姬玄立即转向。
两人在节点间跳跃,避开∞边,一刻钟后,终于找到负权环——
那是三个节点构成的三角形循环:
A→B权重-2
B→C权重-3
C→A权重-5
循环一周,总权重-10!意味着每走一圈,总距离减少10!
“就是这里。”姬玄眼中闪过决然,“公主,为我护法。我要在环上走…三十圈。”
“三十圈?!”芈月震惊,“负权积累-300,你会被算法反噬重伤的!”
“但积累-300后,我能将一段∞边的‘临时权重’冲为负值,强行打开通道!”姬玄已开始踏步。
一圈。
两圈。
三圈…
每走一圈,姬玄脸色就白一分。负权积累在冲击他的算法根基。
芈月看得心痛,突然拔剑:“我也来!”
“公主不可!”
“递归剑法·分形减负!”芈月剑光流转,竟将负权环复制成三个子环,分摊伤害!
两人在环上疾走,负权值飞速积累:
-100…
-200…
-250…
姬玄嘴角溢血,但眼神愈发锐利。
“够了!”他冲到一条∞边前,将积累的-250负权值全部注入!
“给我——开!”
∞边剧烈颤抖,权重显示疯狂跳动:
∞ → 10000 → 1000 → 100… → 0 → -50!
通道打开了!
“走!”姬玄拉芈月冲过。
但就在通过瞬间,庞涓的声音如鬼魅响起:
“殿下好手段…但你以为,只有一个阵吗?”
“第二阵——最小割截杀!”
第四幕:最大流困境,生死抉择
刚出负权环区域,眼前景象再变。
这次是网络流图:
- 源点S:他们所在位置
- 汇点T:临淄城方向
- 中间节点:十二处关隘
- 边:道路,权重为通行容量
庞涓的声音回荡:“此阵名‘最大流最小割’——我已找到从S到T的最小割集,并派人镇守。你们流量再多,也过不了最小割瓶颈。”
姬玄定睛一看,果然——关键的三条边上,站着三名魏国宗师!
“最小割容量…15。”姬玄快速计算,“意味着同时最多15人通过。但我们有三百人…”
田忌在外怒吼:“庞涓!你截官道、设杀阵,已犯天下算法盟约!各国不会放过魏国!”
庞涓大笑:“只要你们全死在此,谁知道是我魏国所为?”
他顿了顿:“姬玄,我最后给你一次机会——交出玉简,我放你和芈月公主离开。否则…最小割收缩,你们会被空间之力碾碎。”
芈月看向姬玄。
姬玄沉默三息,忽然笑了。
“庞先生,你可知…最大流算法,有个隐藏特性?”
“什么?” “增广路径不止一条。”姬玄眼中数据流转,“你找到的最小割,是基于当前网络结构。但如果…我临时增加节点呢?”
庞涓一愣:“增加节点?阵法已定,你如何增加?”
姬玄不答,转向芈月:“公主,你的递归剑法,能否在虚空中开辟临时通道?哪怕只能维持十息?”
芈月点头:“可以,但需极大灵力。”
“用这个。”姬玄将《九章算法》玉简塞给她,“以圣典为引,开辟‘虚节点’。”
“那你呢?”
“我来计算增广路径。”姬玄再次坐下,玉笔狂舞。
这次是埃德蒙兹-卡普算法(Edmonds-Karp)——用BFS找增广路径,反复增广直至最大流。
但姬玄要做的更激进:动态修改网络拓扑!
class 动态最大流 {
int 最大流量(网络 原网, 节点 源, 节点 汇, List<虚节点> 新增节点) {
// 构建扩展网络
网络 扩展网 = 原网.深拷贝();
for (虚节点 v : 新增节点) {
扩展网.添加节点(v);
// 连接虚节点到原网络
扩展网.添加边(v, 某原节点, 容量);
扩展网.添加边(另一原节点, v, 容量);
}
int 总流量 = 0;
while (true) {
// BFS寻找增广路径
int[] 父节点 = new int[扩展网.节点数];
Arrays.fill(父节点, -1);
Queue<Integer> 队列 = new LinkedList<>();
队列.offer(源.编号);
父节点[源.编号] = -2;
while (!队列.isEmpty()) {
int 当前 = 队列.poll();
for (边 e : 扩展网.邻接表[当前]) {
if (父节点[e.终点] == -1 && e.剩余容量() > 0) {
父节点[e.终点] = 当前;
队列.offer(e.终点);
}
}
}
if (父节点[汇.编号] == -1) break; // 无增广路径
// 计算路径最小剩余容量
int 路径流 = Integer.MAX_VALUE;
for (int v = 汇.编号; v != 源.编号; v = 父节点[v]) {
int u = 父节点[v];
路径流 = Math.min(路径流, 扩展网.获取边(u, v).剩余容量());
}
// 更新流量
for (int v = 汇.编号; v != 源.编号; v = 父节点[v]) {
int u = 父节点[v];
扩展网.获取边(u, v).流量 += 路径流;
扩展网.获取边(v, u).流量 -= 路径流; // 反向边
}
总流量 += 路径流;
}
return 总流量;
}
}
现实中,芈月已祭出玉简。
“递归·虚空开辟!”
剑光斩过,虚空中裂开三道临时缝隙——正是三个虚节点!
姬玄同步计算:“连虚节点A到节点3,容量10;连节点7到虚节点B,容量8;连虚节点C到节点11,容量12…”
网络结构瞬间改变!
庞涓的最小割,被绕过去了!
“不可能!”庞涓失声,“你怎么能临时改阵?!”
“因为你的阵法,”姬玄起身冷笑,“是静态的。而真实世界…是动态的。”
他挥手:“田将军!带兵过阵!新路径容量30,足够!”
“是!”田忌率兵冲入。
庞涓急吼:“拦住他们!”
但已经晚了。
虚节点维持的十息内,三百齐兵已冲过最小割区域,杀向三名魏国宗师!
然而…
就在最后一批士兵通过时,虚节点崩溃!
芈月灵力耗尽,喷血倒地。
更糟的是——庞涓亲自出手了!
第五幕:宗师之战,图论巅峰对决
庞涓不再摇扇,手中多了一柄算筹剑。
“姬玄,我承认你天赋惊人…但今日,你必须死。”
他剑指苍天:“第三阵——强连通分量封锁!”
天地变色,所有节点和边开始收缩合并!
姬玄瞬间明悟:庞涓要将整个网络收缩成几个强连通分量(SCC),把他们困在某个分量里,永远到不了汇点T(临淄)!
“这是**科萨拉朱算法(Kosaraju)**的逆向运用…”姬玄扶住芈月,大脑飞转,“找SCC,然后…封锁边界。”
常规破法:找到自己所在SCC的所有边界边,强行突破。
但庞涓是宗师境,灵力压制!
“只能拼算法理解…”姬玄咬牙,“科萨拉朱算法核心是两次DFS:一次原图,一次反图。如果我…同时进行呢?”
一个疯狂念头涌现。
“公主,”姬玄低声道,“还能再用一次递归吗?”
芈月虚弱点头:“一次…最多。”
“好。你用递归实现并行DFS——同时遍历原图和反图!我来计算SCC的边界脆弱点!”
这是赌命。
芈月盘膝,玉简悬浮头顶,开始同时构建原图递归树和反图递归树。
姬玄则盯着收缩的网络,寻找那个关键边——连接他们所在SCC与其他SCC的边,且…权重可被修改。
找到了!
有一条边,权重正好是质数,且是当前SCC中唯一的质数权重边。
“质数…不可分解…”姬玄眼中闪过明悟,“庞涓用质数权重,是因为质数在模运算下性质特殊,难以被修改。”
“但反过来说…只要我能分解这个质数,就能打破权重封锁!”
怎么分解?
用算法暴力分解?时间不够。
那么…用数学定理!
“我记得…费马小定理:若p是质数,a不是p的倍数,则a^(p-1) ≡ 1 (mod p)。”姬玄飞速计算,“如果我能构造一个a,使a^(p-1) ≡ 0 (mod p)…不,不可能…”
等等。
“威尔逊定理:(p-1)! ≡ -1 (mod p),当且仅当p是质数!”
姬玄眼睛亮了:“如果我证明这条边的权重p不满足威尔逊定理,就能证明它不是质数,从而分解它!”
但计算(p-1)!模p…p很大,不可能直接算。
需要快速阶乘模算法…
“分段计算+中国剩余定理!”姬玄玉笔狂舞,“将p-1分解因式,分段计算模p,最后合并…”
这是极度复杂的数论计算,但姬玄在系统加持下,大脑如超级计算机!
三息。 五息。 十息…
“算出来了!”姬玄大喝,“(p-1)! ≡ 156 (mod p),不是-1!所以p不是质数!”
他一指点向那条边:“破!”
边权重闪烁,从质数p分解为两个因数:p = a × b!
权重封锁解除!
整个强连通分量开始分裂!
“噗——”庞涓遭反噬,吐血倒退。
他惊恐地看着姬玄:“你…你连数论都…”
姬玄不给他机会,抱起芈月:“田将军!冲出去!”
“杀——!”
齐兵冲锋,魏国阵师溃败。
庞涓怨毒地看了姬玄一眼,捏碎传送符消失。
第六幕:临淄城下,叛徒现身
冲出杀阵时,天已破晓。
临淄城轮廓在望,但…
城门紧闭,吊桥高悬。
城墙上,站着一个人。
齐国宰相——邹忌。
田忌策马上前:“邹相!快开城门!大王危殆,殿下归来!”
邹忌却不动,俯视众人,缓缓道:“田将军,你身边那人…真是七王子吗?”
田忌一愣:“邹相何意?!”
“我接到密报,”邹忌冷声道,“真七王子已在迷宫遇害,此人是魏国细作假扮,欲入城害大王。”
“胡言!”田忌怒道,“殿下刚破庞涓三阵,救我等性命!”
“那更是可疑,”邹忌冷笑,“庞涓乃魏国宗师,姬玄一个‘纨绔’,如何能破?定是演苦肉计!”
姬玄心中冰冷。
他明白了——邹忌就是内奸!
父王的算法反噬,恐怕就是邹忌做的手脚。现在他归来救父,邹忌必须阻止。
“邹相,”姬玄扬声道,“你说我是细作,有何证据?”
“证据?”邹忌挥手,“带上来!”
几名士兵押上一人——竟是赵国那名修士,姬玄在第一层迷宫救过的人!
修士满脸愧色,低头道:“是…是七王子逼我作伪证,说他破了迷宫…其实他是魏国安排…”
“你!”田忌气得发抖。
姬玄却笑了:“邹相好手段。但…你忘了一件事。”
“什么?”
“我救此人时,在他身上留了递归印记。”姬玄看向修士,“印记可记录他三日内所见所闻。要不要…现在公开?”
修士脸色惨白。
邹忌眼神一厉:“妖言惑众!弓箭手——”
城墙上出现数百弓箭手!
田忌拔剑:“邹忌!你敢?!”
就在剑拔弩张之际——
“住手!”
一声虚弱但威严的喝声响起。
齐威王,被两名太监搀扶着,出现在城楼!
他脸色苍白如纸,气息微弱,但眼神锐利如刀。
“父王!”姬玄惊喜。
齐威王盯着邹忌:“邹相…你告诉寡人,玄儿是细作?”
邹忌冷汗涔涔:“大王,您病体未愈…”
“寡人是算法反噬,不是瞎了!”齐威王咳嗽两声,“开城门,迎王子!违令者…斩!”
邹忌咬牙,最终挥手:“开城门…”
吊桥缓缓放下。
但姬玄看到,邹忌眼中闪过决然杀意。
第七幕:王宫救治,最大流医理
王宫,养心殿。
齐威王躺在玉榻上,胸前一道黑色递归纹路蔓延,正是栈溢出毒素。
太医令颤声道:“殿下,毒素已侵心脉,寻常药石无效…唯有《九章算法》第二卷‘方程术’可解。”
姬玄握着父王的手:“第二卷在魏国…但我有第一卷,或可一试。”
芈月虚弱道:“第一卷有‘方田术’,可计算面积…但与解毒何干?”
“将父王身体视为网络流图,”姬玄解释,“毒素是负流量,我需要找到从心脏到体外的最大流路径,将毒素‘冲’出去。”
这是将医学问题转化为最大流问题!
姬玄闭目,神识探入父王经脉。
果然——经脉如网络,穴位如节点,气血流动如边权重。黑色毒素堵塞了关键节点,形成“最小割”,使排毒路径中断。
“需要计算当前网络的最大流量,然后找到最小割集,强行打通。”姬玄对太医道,“准备九根金针,对应九个关键穴位。”
他再次动用埃德蒙兹-卡普算法,但在人体经脉中实施:
构建残存网络:将经脉建模为有向图,毒素堵塞处容量为0
BFS找增广路径:神识扫描,找气血可流动的路径
沿路径‘推送’气血:冲开部分堵塞
重复直到无增广路径
这需要极度精密的控制。
姬玄额头见汗,神识如针,在父王经脉中穿梭。
一刻钟…
两刻钟…
“噗!”齐威王突然喷出一口黑血!
黑色递归纹路开始消退!
太医惊喜:“毒素排出来了!”
但姬玄脸色更凝重——他发现了更可怕的事。
毒素源头…不在体外。
在父王体内深处,有一个隐藏的递归函数,在不断生成新毒素!
“这是…”姬玄震惊,“有人将一段恶意递归代码植入父王功法中!只要运功,就会触发递归,生成毒素!”
芈月也探查到了:“好狠毒的手段…这是谁做的?”
“能接触父王核心功法,且精通递归的…”姬玄眼中寒光一闪,“邹忌。”
邹忌是齐国除淳于髡外,最擅递归之人!
而且,只有他能接触《齐民算法》原本!
第八幕:夜探相府,图遍历寻证
当夜,姬玄决定夜探相府。
芈月坚持同往:“你刚为齐王疗伤,灵力大损。我虽伤未愈,但还能一战。”
两人黑衣蒙面,潜入相府。
相府如迷宫,戒备森严。但姬玄用图遍历算法规划路线:
“用深度优先搜索(DFS)探路,发现守卫就回溯;找到书房就用广度优先搜索(BFS)找密室…”
他们在屋檐上飞掠,如两道影子。
书房果然有密室,但需要密码。
芈月看着门上的九宫格锁:“这是…数独锁?”
“不,是图着色问题。”姬玄观察,“九个格子,需填三种颜色,相邻不同色…这是判断三着色问题是否有解。”
他快速推演:“三着色是NPC问题,但九宫格规模小,可暴力解…”
正推演着,忽然——
“既然来了,何必偷偷摸摸?”
邹忌的声音从身后响起!
两人回头,邹忌带着十名死士,堵住退路。
“七王子殿下,”邹忌冷笑,“夜闯相府,可是死罪。”
“邹相,”姬玄摘下面巾,“父王体内的递归毒,是你下的吧?”
邹忌笑容消失:“殿下说什么,老夫听不懂。”
“需要证据?”姬玄指向密室,“证据就在里面,对吗?你与魏国勾结的信件,还有…递归毒的原始算法。”
邹忌沉默片刻,忽然笑了:“是又如何?齐王已中必死之毒,你也活不过今晚。”
他挥手:“杀!”
十名死士结阵杀来——这次是二分图匹配杀阵!
每个死士分属两个集合,攻击时形成完美匹配,威力倍增!
芈月拔剑迎战,但伤势未愈,很快落于下风。
姬玄护住她,脑中急转:“二分图最大匹配…用匈牙利算法找增广路径,破坏匹配…”
但需要时间!
就在危急时刻——
“邹忌!你竟敢对殿下动手!”
田忌率兵杀到!原来姬玄离宫前,已让田忌暗中跟随。
邹忌脸色大变:“田忌?!你…”
“我早就怀疑你了!”田忌怒喝,“拿下!”
士兵围攻。
邹忌见势不妙,转身冲入密室!
姬玄急追:“他要毁证据!”
追入密室,只见邹忌正将一叠信件扔进火盆。
姬玄一剑挑飞火盆,但信件已烧大半。
邹忌狞笑:“晚了!没有证据,你能奈我何?”
姬玄却看向密室墙壁——墙上刻着递归毒的核心算法!
他立即用玉简拓印。
邹忌见状,扑上来拼命。
两人在密室中对掌,灵力激荡!
姬玄新晋宗师,但消耗太大;邹忌是老牌宗师,且狗急跳墙。
就在姬玄渐感不支时——
“递归·斩!”
一道剑光从背后刺穿邹忌!
芈月脸色苍白,剑尖滴血:“这一剑…为齐王,也为…算法正道。”
邹忌倒地,眼中满是不甘。
姬玄扶住芈月:“你伤更重了…”
“不碍事。”芈月虚弱一笑,“快拓印算法,救你父王。”
第九幕:递归解毒,堆栈修复术
带回递归算法后,姬玄连夜研究。
这毒果然精妙:一个无限递归函数,嵌在《齐民算法》的某个循环中。只要齐王运功,就会触发递归,且没有终止条件。
解法:要么找到终止条件,要么…强行设置递归深度上限。
“系统,”姬玄心中呼唤,“可兑换‘栈帧修复术’吗?”
【系统】:检测到需求“递归深度限制”
【兑换项】:尾递归优化术(8000金币)、迭代改写术(10000金币)、栈帧手动修复术(12000金币)
【当前金币】:18200
“兑换栈帧手动修复术。”
【兑换成功,扣除12000金币】
【获得《栈帧修复术·上古卷》】
姬玄立即学习。
原来原理是:在递归调用时,手动管理栈帧,设置深度计数器,超限则强行返回。
他结合邹忌的递归毒代码,写出了解毒算法:
class 递归解毒 {
// 原毒代码(恶意递归)
void 递归毒(int 深度) {
if (深度 > 10000) { // 恶意:永远不成立的条件
return;
}
// 生成毒素
生成毒素();
// 递归调用
递归毒(深度 + 1); // 无限递归
}
// 解毒算法:栈帧修复版
void 修复版(int 深度, int 最大深度) {
// 手动栈帧管理
if (深度 >= 最大深度) {
// 强行返回,避免栈溢出
return;
}
// 修复:将递归调用改为尾递归形式
生成毒素();
// 模拟栈帧弹出/压入
保存现场();
// 尾调用优化
修复版(深度 + 1, 最大深度);
恢复现场();
}
// 最终方案:改为迭代
void 迭代解毒() {
int 深度 = 0;
while (深度 < 安全深度) {
生成毒素();
深度++;
// 每千层检查一次身体状态
if (深度 % 1000 == 0) {
if (身体承受不住()) {
break; // 提前终止
}
}
}
}
}
拿着算法,姬玄再次为父王疗伤。
这次,他深入递归毒的核心,在每次递归调用前插入深度检查,超限则强行跳出。
这是个精细手术,稍有不慎,可能伤及父王功法根基。
三时辰后。
齐威王再次喷血,但这次是瘀黑毒血。
胸前的递归纹路彻底消失!
太医探查后惊喜道:“毒素全清!大王脉象平稳了!”
姬玄松了口气,眼前一黑,几乎晕倒。
芈月扶住他:“你消耗太大了…”
这时,齐威王悠悠转醒。
他看着姬玄,眼中欣慰:“玄儿…你救了父王,也救了齐国。”
“父王,”姬玄跪下,“邹忌已伏诛,但魏国不会罢休。庞涓逃了,必会报复。”
齐威王挣扎坐起:“传寡人旨意:一、厚葬阵亡将士;二、追查邹忌余党;三、封七王子姬玄为算法监国,总领齐国算法事务!”
“父王,儿臣…”
“你有这个能力。”齐威王握住他的手,“而且…你身边这位楚国公主,似乎也值得信任。”
芈月脸红低头。
齐威王又咳嗽两声:“还有…玄儿,你与芈月公主的事…寡人准了。”
姬玄、芈月皆是一愣。
“父王,我们…”
“寡人还没老糊涂。”齐威王笑道,“你们在迷宫并肩作战,在城外生死与共…这若不算情谊,什么算?”
他正色道:“但楚王那边…需有个交代。芈月,你可愿暂留齐国,助玄儿一臂之力?”
芈月看了姬玄一眼,轻声道:“愿意。”
尾声:风雨欲来
三日后,邹忌谋逆案查清。
他不仅对齐王下毒,还私通魏国,承诺若助魏得《九章算法》,魏助他篡位。
牵扯出朝中十三名官员,全部下狱。
齐威王康复临朝,第一件事就是——对魏国宣战!
“魏国设杀阵截杀王子,此仇必报!”齐威王诏令,“田忌为帅,姬玄为军师,率军十万,伐魏!”
同时,姬玄公开《九章算法·第一卷》基础篇,齐国算法修士欢呼雀跃。
但姬玄心中清楚——真正的战争,才刚刚开始。
庞涓未死,魏国还有更强算法高手。
而且…秦国、楚国态度暧昧,赵国、韩国蠢蠢欲动。
“在想什么?”芈月走到他身边。
姬玄望向西方:“在想…庞涓此刻在做什么。”
“他一定在准备更可怕的阵法。”芈月担忧,“你刚封监国,就要出征…”
“有些仗,必须打。”姬玄握住她的手,“而且这次…我有你。”
芈月脸微红,却没抽手。
这时,系统提示:
【新主线任务:伐魏之战】
【目标:击败魏国算法军团,擒杀庞涓】
【关键算法:动态规划(行军路线)、博弈论(战术决策)】
【特殊:解锁“军阵算法”模块】
【支线任务:楚国之约】
【目标:获得楚王认可,正式与芈月订婚】
【需完成:楚王出的三道算法难题】
【难度:★★★★★】
姬玄笑了。
算法治国,算法治军,算法…还能定姻缘。
这个时代,越来越有意思了。
但他没注意到…
临淄城外,某处阴影中,一道黑影正盯着王宫方向。
黑影手中,捏着一枚血色玉简:
“姬玄…你破我三阵,杀我棋子…接下来,让你见识真正的‘图论杀局’。”
“魏国国师…鬼谷子,已出山。”
【下章预告】
第四章:鬼谷出山,动态规划
核心算法:背包问题(粮草分配)、最长公共子序列(破译军情)
关键冲突:鬼谷子布“多维背包杀阵”,姬玄需同时优化多个目标
感情进展:芈月为救姬玄中咒,姬玄怒而突破
新危机:秦国突然出兵,意图坐收渔利…
【本章算法知识点】
最短路径:Dijkstra(正权) vs Bellman-Ford(可负权)
最大流最小割:Edmonds-Karp算法(BFS找增广路径)
强连通分量:Kosaraju算法(两次DFS)
图着色与NPC问题:三着色问题的复杂性
递归与栈溢出:深度限制与尾递归优化
二分图匹配:匈牙利算法
(对应LeetCode:743网络延迟时间、207课程表、200岛屿数量等…)
