棋盘和规则

在整数坐标网格上,从起点(0,0)前往终点(4,3)。每一步只能向东走一个单位或向北走一个单位,不得向西、向南或斜行;格点(2,1)设为禁行点,路线不能踩到它。

求最短路线条数。由于每一步都增加横坐标或纵坐标,任何最短路线都必须恰走4次东、3次北,总计7步;不得绕远后仍称最短。

路径计数还假定禁行点只封锁(2,1)这个顶点,不会额外封掉相邻边。若限制一条边或整个方格,穿越障碍的路线集合会不同。明确障碍的几何含义,是组合计数可复核的前提。

先数所有最短路线

若暂时忽略障碍,7步中选择哪3步向北即可确定整条路线,其余4步向东。因此路线数为组合数C(7,3)=35。东、北步序列与路线一一对应,不会把同一条路线重复计算。

例如“北、东、东、北、东、东、北”和“东、北、东、东、北、东、北”是不同路径,因为经过的格点次序不同。顺序改变会形成不同路线,正是组合计数中的排列对象。

总路线数用C(7,3)而不是C(7,4),两者数值相同,因为选择3个北步的位置等价于选择剩下4个东步的位置。禁点前后分别数步序,再相乘,符合先选前段、再选后段的乘法原理。

数经过禁格的路线

要经过(2,1),先从(0,0)到(2,1),需要2东1北,共3步;这三步中北步位置有C(3,1)=3种。到达禁格后,继续走到(4,3)需2东2北,共4步,顺序有C(4,2)=6种。

任意一条经过禁格的最短路线,恰好分解为起点至禁格的前段和禁格至终点的后段;前后两段可以独立选择,所以经过禁格的路线为3×6=18条。

终点也可用递推表独立验证。每个可走点的路径数来自左侧和下侧;若其中一侧越出网格,就按0处理;若点是禁点,也强制置0。如此从坐标较小处逐层计算,不会遗漏可行前缀。

相减得到答案

不经过障碍的合法最短路线为总数减去经过禁格的路线:35−18=17。每条路线要么经过(2,1),要么不经过,两个集合互斥且覆盖全部路线,因此相减没有遗漏或重复。

还可逐层动态计数:到某格的路径数等于左边格与下边格路径数之和,禁格路径数设为0。按此规则填表,终点也得到17,可作为独立核验。

可用补集避免逐条列出合法路径:先数所有路径,再数包含指定禁点的路径并相减。这个思路要求所有经过禁点的路径能在该点唯一分成前后两段,本题每条最短路线恰好只经过该格点一次。

评分与边界

答案为17条。完整作答要写出总路线35、穿过障碍18,并说明组合数计算;也可提供动态计数表。只凭图上数线条容易漏算,未明确东、北步序的路线也不算有效。

若允许斜走、绕远或把障碍设为一整格而不是一个格点,问题会改变。本题障碍明确定义为不可经过的格点,所有最短路线长度固定为7步。

动态计数的递推也可以用小表来检查:起点路径数记1;沿网格向东或向北,每格累加左侧和下侧来源,禁行点直接记0。先后填到终点会得到17。组合减法更简洁,但这个独立算法有助于检查把前后段乘法写错的情况。每一步长度固定为单位格,故同一组东、北步序只对应一条最短路线。