01迷宫-做题报告
1|001迷宫
2018-10-19
看到这道题就无脑bfs了,然后拿了50分。然而并不知道怎么优化。
我觉得超时主要的原因是每次输入都要询问废话,还有每次都要用memset来清空vis数组(但是不知道要怎么改啊啊啊)
然后我看了很多篇题解,终于发现了一篇适合我的:
大概的思路是记忆化
-
设num为第num的次输入。则anser[num]就是第num次输入的答案
-
把原来用来标记的vis数组的赋值步骤vis[sx][sy]=1改成vis[sx][sy]=num;因为只要在bfs(x,y)中搜索到了sx,sy;那么根据题目的性质bfs(sx,sy)和bfs(x,y)的答案是一样的;记得在开头vis[x][y]=num
-
最后在每一次bfs的结尾把答案存入anser[num]中,下一次搜索时如果vis[x][y]有值那么直接输出anser[vis[x][y]]即可。
附上我的AC代码
1|1现在是2018/12/06 我又重做了一遍这道题。
这次完全是自己的思想
我看了下样例发现了一个规律,你每次搜索时搜索到的每一个点的答案都是一样的,于是我每次dfs完直接把搜到的点的答案都更新一边就可以了。
1|2code
之前忘了每次询问都要ans.clear();了,然后还一度怀疑自己的做法是错的。。。
__EOF__

本文作者:Kdlyh
本文链接:https://www.cnblogs.com/kdlyh/p/17777013.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/kdlyh/p/17777013.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下