poj3126专题

__BFS(POJ3126)

简单bfs,处理的时候,用的Map没过,看来这个题得好好考虑考虑时间复杂度了 #include<stdio.h>#include<string.h>#include<queue> #include<algorithm>using namespace std;int visit[10010];int visit2 [10010];int prim(int x){for(int j

POJ3126 Prime Path【数论】【BFS】

题目链接: http://poj.org/problem?id=3126 题目大意: 给你两个有四位数字的素数 A、B,问:每次只改变一个数字,且改变前后的数都是 素数,那么从 A 变到 B,最少需要多少次。 解题思路: 用 BFS 来做。判断素数用筛法求素数打表预处理一下,不过注意 1000 以下的数要 当非素数看待。 每次改变一位数字,并且如果改变后的数仍为素数的

【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】

POJ3126Prime Path 给定两个四位素数a  b,要求把a变换到b 变换的过程要 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数  与  前一步得到的素数  只能有一个位不同,而且每步得到的素数都不能重复。   ///果不其然各种姿势操T了,在暴力的时候,调用了太多的C++库文件#include <iostream>#include <cstdio>#incl

poj3126 - Prime Path(BFS)

题目链接:http://poj.org/problem?id=3126 题意:给定两个素数n和m,要求把n变成m,每次变换时只能变一个数字,即变换后的数与变换前的数只有一个数字不同,并且要保证变换后的四位数也是素数。求最小的变换次数;如果不能完成变换,输出Impossible。 思路:广搜枚举每一位数字加入队列(个位1-9的奇数,十位,百位0-9,的数字,千位1-9的数字),能得到答案就一定是