• POJ 3126 Prime Path BFS搜索


    题意:就是找最短的四位数素数路径

    分析:然后BFS随便搜一下,复杂度最多是所有的四位素数的个数

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<map>
    #include<queue>
    #include<stdlib.h>
    #include<string>
    using namespace std;
    typedef long long LL;
    const int maxn=10005;
    const int INF=0x3f3f3f3f;
    int t,s;
    int a[maxn];
    bool vis[maxn];
    bool fun(int x)
    {
        for(int i=2; i*i<=x; ++i)
            if(x%i==0)return 0;
        return 1;
    }
    struct Data
    {
        int b[4];
    } d,e;
    queue<Data>q;
    int get(Data x)
    {
        int ans=0;
        for(int i=3; i>=0; --i)
            ans=ans*10+x.b[i];
        return ans;
    }
    int main()
    {
        int T;
        for(int i=1001; i<10000; ++i)
            if(fun(i))vis[i]=1;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&s,&t);
            memset(a,-1,sizeof(a));
            while(!q.empty())q.pop();
            if(!vis[s]||!vis[t])
            {
                printf("Impossible
    ");
                continue;
            }
            a[s]=0;
            for(int i=0; i<4; ++i)
            {
                d.b[i]=s%10;
                s/=10;
            }
            q.push(d);
            while(!q.empty())
            {
    
                e=d=q.front();
                q.pop();
                int k=get(d);
                if(k==t)break;
                for(int i=0; i<4; ++i)
                {
                    for(int j=0; j<10; ++j)
                    {
                        if(j==d.b[i])continue;
                        e.b[i]=j;
                        int x=get(e);
                        if(!vis[x]||a[x]>=0)continue;
                        a[x]=a[k]+1;
                        q.push(e);
                    }
                    e.b[i]=d.b[i];
                }
            }
            if(a[t]==-1)
            {
                  printf("Impossible
    ");
                  continue;
            }
            printf("%d
    ",a[t]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    dubbo学习总结二 服务端
    dubbo学习总结一 API
    mybatis中的#和$的区别
    Spring boot配置注意事项
    dubbo 学习
    框架发展过程
    使用OkHttp模拟登陆LeetCode
    Java设计模式——建造者模式(创建型模式)
    Java设计模式——单例模式(创建型模式)
    Java中static的用法
  • 原文地址:https://www.cnblogs.com/shuguangzw/p/5162859.html
Copyright © 2020-2023  润新知