rt,不难看出如果进入死循环,那么F和C都已经进入了各自的循环。我们记录每一个格子F和C是否经过和如果经过,方向是什么,再在F和C各自移动的每一步检测是否已经以同样的方向来过一次了。
如果F和C都进入了循环,在这一刻记录F和C各自的位置。然后再在每一步检测F和C是否又一次同时到达了相同的位置,如果是,则一定进入死循环。
想实现这个功能,有以下几点需要注意:
F*.C......
*.........
..........
..........
..........
..........
..........
..........
..........
..........
(因为F一直转向)
这个做法的好处:对于这一道题来说,时间上可以压到27ms以内,空间上理论可以小于700KB(我个人测试的每一次都有出入,最小的一次716KB;而且把代码里的int数组换成几个bool数组大概还能压一点)
当然了这题数据比较弱,追求这个好像没啥用
最后希望大家能在这道题里找到思考的快乐,文中如果错误欢迎指正。