01 2017 档案

摘要:这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而Helen达到(1,2),这种情况也算是相遇。 阅读全文
posted @ 2017-01-07 16:48 Vincent_Bryan 阅读(400) 评论(0) 推荐(0)
摘要:这道题没有找到一条回路,所以不能跟1152一样用数组储存后输出。我采用的方法是DFS加剪枝,直接DFS搜索会超时,优化的方法是在搜索是优先走出度小的路径,比如move1和move2都可以走,但是如走了move1后下一步有7种方向可以走,而走了move2后有2种方向可以走,那我们就优先走move2,具 阅读全文
posted @ 2017-01-07 10:22 Vincent_Bryan 阅读(438) 评论(0) 推荐(0)
摘要:这道题嘛,直接使用DFS搜索,然后莫名其妙地AC了。后来看了题解,说是move的顺序不同的话可能会导致超时,这时便需要剪枝,真是有趣。原来自己是误打误撞AC了,hhh。题解还有另一种解法是先把一条完整的路储存在数组里,输入i的时候,就从i位置起把数组循环输出一遍,真是666的解法呀,果然不能被传统的 阅读全文
posted @ 2017-01-06 23:27 Vincent_Bryan 阅读(395) 评论(0) 推荐(0)
摘要:题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作。可用BFS搜索解答,用vector储存每次的操作 阅读全文
posted @ 2017-01-06 19:51 Vincent_Bryan 阅读(205) 评论(0) 推荐(0)
摘要:题意为给出两个四位素数A、B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B。可以直接进行BFS搜索 阅读全文
posted @ 2017-01-06 19:34 Vincent_Bryan 阅读(286) 评论(0) 推荐(0)
摘要:相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒。关于康托展开可以参考,其可用数学归纳法证明:http://www.cnblogs.com/1-2-3/archive 阅读全文
posted @ 2017-01-06 19:21 Vincent_Bryan 阅读(282) 评论(0) 推荐(0)
摘要:此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 阅读全文
posted @ 2017-01-06 19:03 Vincent_Bryan 阅读(390) 评论(0) 推荐(0)
摘要:这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 阅读全文
posted @ 2017-01-06 18:24 Vincent_Bryan 阅读(265) 评论(0) 推荐(0)