POJ(3126)(Prime Path)

链接:https://vjudge.net/problem/POJ-3126#author=0

思路:一道埃氏筛法 + bfs的题目,因为要测试多个数据所以可以先打印一张五位数内的质数表,然后bfs从起点开始搜索,每次变化一位,然后判断条件并确定是否放入队列,dp数组记录距离(即花费)。

代码:

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

const int maxn = 10000;

bool isprime[maxn+1];
int prime[maxn+1];
int dp[maxn+1];

int getnext(int num,int t,int change){
    if(t==0)return num/10*10+change;
    else if(t==1)return num/100*100+num%10+change*10;
    else if(t==2)return num/1000*1000+num%100+change*100;
    else return num%1000+change*1000;
}

int main(){
//打表
    int p = 0;
    for(int i=0;i<=maxn;i++)isprime[i] = true;
    isprime[0] = isprime[1] = false;
    for(int i=2;i<=maxn;i++){
        if(isprime[i]){
        prime[p++] = i;
            for(int j=2*i;j<=maxn;j+=i){
                isprime[j] = false;
            }
        }
    }

    int n;
    cin>>n;

    while(n--){
        int a,b;
        cin>>a>>b;
        memset(dp,0x3f,sizeof(dp));
        dp[a] = 0;
//bfs
        queue<int> q;
        q.push(a);
        while(!q.empty()){
            int cur = q.front();
            q.pop();
            for(int i=0;i<4;i++){
                for(int j=0;j<10;j++){
                    if(i==3&&j==0)continue;
                    int next = getnext(cur,i,j);
                    if(isprime[next]==false||dp[next]<=dp[cur])continue;
                    dp[next]  = dp[cur] + 1;
                    q.push(next);
                }
            }
        }
        cout<<dp[b]<<endl;
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,909评论 2 36
  • 链接:https://vjudge.net/problem/POJ-1077申明:本题没有AC,因为存在多解情况下...
    kimoyami阅读 795评论 0 0
  • 女儿从大学的绿房子里走出来 她身上跳跃着小鹿般欢快的光芒 她去剪头发,买新衣服 准备以人之初的模样走向社会 我透过...
    舒严阅读 155评论 0 0
  • 入梅渐微凉,繁花落地成霜,你去门口奥数,耗尽所有晨光,不思量自难相忘。 夭夭桃花凉,懒觉你怎舍下 ,这一奥心茫茫,...
    MiluJoy阅读 168评论 2 5
  • 文/肉丝玫瑰 最近迷《爸爸去哪儿》4,董力和阿拉蕾。 击剑运动员的他,赛场上斗性十足,魅力四射。从采访对话中能了解...
    肉丝玫瑰阅读 301评论 0 2