题解:P13424 [COCI 2020/2021 #1] Patkice
Chenxuhang_play · · 题解
显然发现是模拟。我用的是递归的写法。
直接判断每个格子的类型。如果是 x,即终点,返回这次航行的长度 cnt。如果是方向标(^v<>),按着方向模拟。除外(平静的海面和起点,即 .o)表示不能到达终点。
按照这种方法模拟即可。给出上述部分的代码。用零表示不能到达终点。
if(c[x][y]=='x') return cnt;
if(c[x][y]=='.') return 0;
if(c[x][y]=='o') return 0;
if(c[x][y]=='^' && x-1>=0) return f(x-1,y,cnt+1);
if(c[x][y]=='v' && x+1<r) return f(x+1,y,cnt+1);
if(c[x][y]=='<' && y-1>=0) return f(x,y-1,cnt+1);
if(c[x][y]=='>' && y+1<s) return f(x,y+1,cnt+1);