广州市经济技术开发区蓝玉三街47号 13484411117 kb88@baidu.ag

公司动态

连在一起的指令文字怎样找最低成本切分:状态推演第10例

2026-11-12

把一串没有分隔符的文字切成已知指令时,最长前缀未必让整串成本最低。记录每个前缀的最佳结果,可以比较多种切分并在无法解释的后缀处明确报无解。

先把规则写清楚

字典给每个合法片段一个正整数成本。状态dp位置i表示前i个字符的最低总成本,从零开始;尝试所有能在i之后匹配的片段,并更新结束位置。成本相同优先片段更少,再按完整片段序列的字母顺序确定唯一结果。

本例输入与推演结果

输入串CACBCCCA;字典及成本{'A': 7, 'B': 6, 'C': 1, 'AB': 1, 'BC': 6, 'CA': 4, 'ABC': 9, 'BCA': 5, 'AA': 4, 'CC': 4, 'CAB': 5}。

前缀长度 | 前缀 | 最低成本、片段数、片段序列 0 | 空串 | (0, 0, ()) 1 | C | (1, 1, ('C',)) 2 | CA | (4, 1, ('CA',)) 3 | CAC | (5, 2, ('CA', 'C')) 4 | CACB | (11, 3, ('CA', 'C', 'B')) 5 | CACBC | (11, 3, ('CA', 'C', 'BC')) 6 | CACBCC | (12, 4, ('CA', 'C', 'BC', 'C')) 7 | CACBCCC | (13, 5, ('CA', 'C', 'BC', 'C', 'C')) 8 | CACBCCCA | (16, 5, ('CA', 'C', 'BC', 'C', 'CA'))

这里的编号只用来辨认本例中的对象,不能当成另一份记录里的固定身份。阅读表格时先找到输入,再顺着运算顺序对照输出;空列表、零值和不存在的结果有不同含义,不能混用。表中分数保留精确值,小数显示仅为阅读方便。

怎样自己复核

每个结果中的片段连接后必须恰好等于输入串,不能漏字、多字或交换顺序。不可达位置标为空,而不是成本零。表中的前缀最佳解只服务于自己的结束位置,不能把不同位置的状态直接拿来比较长短。

从最终位置沿片段重建完整解释,再把所有成本相加核对。练习时加入一个字典不包含的字符,应得到无解而不是静默丢弃它。若成本依赖前一个片段,就要把前一片段的信息加入状态,当前只按位置记录的表不再足够。

适用范围

这是一种明确给定的文字切分模型,没有语义推断、拼写纠错或上下文语法。成本不是概率,贪心选择最长片段或最便宜的单个片段都未必最优。

本例是一套可复现的游戏机制练习,不依赖具体品牌或某个软件的默认设置。修改任何边界约定、输入参数或操作顺序后,应重新推演并保存中间状态。发现差异时先定位第一处不一致,再判断是规则不同还是计算错误,不要只把最终答案调整到看起来相同。