Advertisement

信息学奥赛一本通:例3.6

阅读量:

【题目描述】

位于A点(0,0)处的红方跳棋子欲抵达目标B点(n,m),其中n和m为不超过20的正整数。该跳棋仅可向下方或向右移动。在棋盘上某一点C(x,y)处存在黑方马,请注意该马可控制的所有跳跃一步可达之位置(如P1,P2,...,P8),这些位置均不可作为跳跃中途经过之格子。请计算红方跳棋子从起点A(0,0)到终点B(n,m)的所有可行路径总数

【输入】

给出n、m和C点的坐标。

【输出】

从A点能够到达B点的路径的条数。

【输入样例】

复制代码
    8 6 0 4

【输出样例】

复制代码
    1617

【解题思路】

初始化一个二维数组f_{25} \times 25并采用嵌套的for循环结构遍历整个二维数组区域,在每个元素位置上记录从起点到当前位置所需走过的步数

我们首先确定了所有马的控制点位置。例如p1点的位置, 马跳至该处需沿x轴方向向前移动两个单位长度, 同时沿y轴方向向前移动一个单位长度, 因此mx[1] = 2, my[1] = 1, 其坐标确定为(x加上mx[5

全部评论 (0)

还没有任何评论哟~