![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
小狐狸jun
菜鸟飞呀飞~
展开
-
POJ2965 状态压缩+BFS,DFS枚举,以及大牛的解法~
和poj1753非常相似,这题用状态压缩+BFS同样可以解,状态压缩就是用二进制来表示一种状态。 这是我在1753上改的BFS+状态压缩代码: //二进制+BFS写法 #include using namespace std; //解决问题路径搜索 bool flag[65536]; int step[65536]; struct con { int f;原创 2013-03-15 16:53:37 · 2646 阅读 · 0 评论 -
POJ 1426 广搜BFS
DescriptionGiven a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 20原创 2012-12-03 22:30:35 · 377 阅读 · 0 评论 -
POJ 1753 枚举二进制+BFS
搜了一下枚举的题 网上说这题特别经典 这是参考别人的代码,做个模板,运用二进制来保存棋盘,但一旦棋盘规模增大这种算法还是不行,再研究一下DFS的算法。 #include #include using namespace std; int step[65535]; //记录步骤 bool flag[65535]; //防止重复搜索 unsigned sh原创 2013-03-14 17:00:02 · 642 阅读 · 0 评论 -
hdu1242优先队列BFS
题意,给出n*m矩阵,求从r到a的最小步长,其中遇到x两步,' . '为通路' #'为墙。 这题可以直接BFS,我这里第一次用优先队列做,使用STL有风险,一般做小规模模拟题可以,但是STL事实上其操作更繁琐,只是用起来方便而已。 优先队列:priority_queue 这里用一个结构体来作为容器,在其中加上比较符重载,实现使队头保持最小步长。若直接用则是值越大优先权越大。原创 2013-05-21 20:00:46 · 514 阅读 · 0 评论 -
POJ 2449 Dijstra + A* K短路
这题一开始的思路应该是直接从源点进行BFS搜索K短路。 但这样的复杂度在点数和K的值增大后将会变得很大。 而A*算法则构造一个h(x),在进行BFS时,每次都抛出最小的h(x)从而使汇点的出队速度加快。 这题则是先进行一次Dijstra求出每个点到汇点的最短路h(x)从而在优先队列中抛出最小的f(x) A*算法就是启发式搜索,基本形式就是这样:f(x)=g(x)+h(x);其中f(x)代表转载 2013-07-18 10:21:33 · 501 阅读 · 0 评论 -
poj 3635 带花费的Dij+head优化
练习!! 这里主要需要注意的是进队的条件和dp[][]状态的控制,dp[i][j]表示到第i个城市剩余汽油为j的最小花费。 代码: #include #include #include #include #define inf 100000000 #define MAXN 1200 #define MAXM 1200 using namespace std; int原创 2013-07-26 20:16:03 · 665 阅读 · 0 评论