https://vjudge.net/problem/POJ-3009 dfs+回溯的变形 把每次走一步变成每次走一大行即可 具体看代码 AC代码: #include <iostream>#include<cstdio>#include<fstream>#include<algorithm>#include<cmath>#include<deque>#include<vector>#include<queue>#include<string>#include<cstring>#include#include<stack>#i...
poj 3009 (深搜求最短路) 题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。 写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下: 1#include <cstdi...
void dfs(int x, int y, int times) { if (times >= 10) return; if (times > ans) return; int xt, yt; for (int i = 0; i < 4; i++){ xt = x; yt = y; while ( (0<=xt&&xt<h) && (0<=yt&&yt<w) // 向某个方向一直飞啊飞~ && (map[xt][yt] == 0 or map[xt]...
POJ3009 Curling2.0 题解 原题链接 其实这题不难。考虑直接搜索所有情况,最多有 \(4^{10} = 1048576\) 种可能的走法,因此深搜即可简单解决问题。注意到需要数组的变化,因此,如果要用宽搜的话很可能记录状态不方便(直接内存炸掉?),深搜传数组是个很好的选择。 注意几个点: 如果某个方向第一个就是个block...
(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)(2)广度优先搜索(poj3278,poj1426,poj...
(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书 page149): ...
(1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D+w(i,j...
poj2488,poj3083,poj3009,poj1321,poj2251 广度优先搜索 poj3278,poj1426,poj3126,poj3087.poj3414 简单搜索技巧和剪枝 poj2531,poj1416,poj2676,poj1129 动态规划 背包问题 第2周 poj1837,poj1276 经典&&简单DP poj3267,poj1836,poj1260,poj2533,poj3176,poj1080,poj1159,poj2479 数学 组合数学 第2周 POJ3252...
POJ3009 Curling 2.0 http://poj.org/problem?id=3009 扔冰球 最开始没看懂示例数据 才发现相邻有墙时不能扔 程序一定要有很好的可读性 要说清楚 不然越改越烦 具体思路: 每撞到墙 墙体会消失 地图在发生改变 所以不能广搜 深度+回溯 因为深搜会搜出所有可能的投掷方案 所以step <= 10作为剪枝...