此题实际上题意很简单,并且可以观察到10的8次方是要大于整个棋盘的,所以如果在这之后仍在棋盘,那么一定构成了循环,我们可以对棋盘进行模拟,并对路径进行标记,为0表示未走过,为1表示是可循环的路径,为2表示会走出去的路径,为3表示正在模拟中的路径,若在走的过程中碰见了1则此条路径也是循环的,碰见2则此题路径会走出去,碰见3则此条路径构成循环,走出去了则表示此条路径会走出去,实时记录走过的路径并做好标记即可,考验代码基本功
#include<iostream>
#include<cstring>
#include<algorithm>
在一片 n 行 m 列的矩形草地上,每一片方格都有一股永恒不变的风。风的方向用大写字母表示:L 表示向左,R 表示向右,U 表示向上,D 表示向下。初始时刻(第 0 秒),每个方格上都有一片树叶。每一秒,树叶会严格按照所在方格的风向,移动到相邻的方格:风向为 L 时,树叶从 (i,j) 移动到 (i,j−1);R 则移动到 (i,j+1);U 则移动到 (i−1,j);D 则移动到 (i+1,j)。如果树叶被移出了草地的范围,那么它就被吹走了,不再回来。同一个方格内可以同时存在多片树叶。请问,在经过了 108 秒之后,草地上还剩下多少片树叶?
网格的行数 n 和列数 m 满足 1≤n×m≤5000。风的方向仅由字符 L、R、U、D 构成。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册