
广度优先搜索
文章平均质量分 63
徐州牧
这个作者很懒,什么都没留下…
展开
-
poj解题报告——3126
这题打表就挺好,大致题意:给定两个四位素数a b,要求把a变换到b,变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数与前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能重复,求从a到b最少需要的变换次数。无法变换则输出Impossible。代码如下#include #include int vir[10010],fa[10原创 2014-12-21 14:58:33 · 456 阅读 · 0 评论 -
poj解题报告——3087
题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。现在输入s1和s2的初始状态 以及 预想的最终状态s12。问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。 单方向的搜索。变换结果是呈周期性变化的,所以要判断循环只需原创 2014-12-21 15:26:10 · 468 阅读 · 0 评论 -
poj解题报告——1426
题目大意,给出一个整数n,(1 代码如下#include#define N 200#define M 100int n;__int64 que[9999999];void bfs(){ __int64 now; int head=1,tail=1; que[tail++]=1; while(head {原创 2014-12-07 18:05:23 · 462 阅读 · 0 评论 -
poj解题报告——3278
题意是这样子的,给定两个整数n和k,通过 n+1或n-1 或n*2 这3种操作,使得n==k,输出最少的操作次数。 值得注意的是,这题要剪枝,不然会超时。代码如下#include#include#define MAX 100001struct Point{ int x;}queue[100001];int temp;int st原创 2014-12-07 17:15:00 · 594 阅读 · 0 评论 -
poj解题报告——3414
题目大意:有二个水壶,对水壶有三种操作,1)FILL(i),将i水壶的水填满,2)DROP(i),将水壶i中的水全部倒掉,3)POUR(i,j)将水壶i中的水倒到水壶j中,若水壶 j 满了,则 i 剩下的就不倒了,问进行多少步操作,并且怎么操作,输出操作的步骤,两个水壶中的水可以达到C这个水量。如果不可能则输出impossible。初始时两个水壶是空的,没有水。 然后这题就顺理成原创 2014-12-26 22:13:10 · 481 阅读 · 0 评论