poj 3126 Prime Path (广搜)

http://poj.org/problem?id=3126

题意:从一个素数,挨个数位的变换,在此过程中保证每次变换的数位都是素数,最后变到所给的另一个素数最少步多少

分析:广搜,依次换一位数字,判断该数字是否是素数,若是进队列,其中需要注意的是,换千位数字的时候可能会出现

        0的情况,导致所给数字不是4位数

#include<stdio.h>
#include<queue>
#include<string.h>
#include<math.h>
using namespace std;
const int MAXN=20000;
int vis_prime[MAXN];
int vis[MAXN];
int step[MAXN];

void init()
{
    memset(vis_prime,0,sizeof(vis_prime));
    for(int i=2; i<=(int)sqrt(1.0*MAXN); i++)
    {
        if(vis_prime[i]==0)
          {
            for(int j=i*2; j<MAXN; j+=i)
            {
                vis_prime[j]=1;
            }
          }
    }
    //for(int i=1000;i<MAXN/2;i++) if(vis_prime[i]==0) printf("%d ",i);


}

int BFS(int a,int b)
{
    int head,next,i,j;
    memset(vis,0,sizeof(vis));
    queue<int>Q;
    Q.push(a);
    vis[a]=1;
    step[a]=0;
    while(!Q.empty())
    {
        head=Q.front();
        Q.pop();
        for(i=0;i<4;i++)
        {
            for(j=0;j<=9;j++)
            {
                if(i==0) next=head/10*10+j;
                if(i==1) next=head/100*100+j*10+head%10;
                if(i==2) next=head/1000*1000+head%100+j*100;
                if(i==3) next=j*1000+head%1000;
                if(next==b) return step[head]+1;
                if(!vis_prime[next] && !vis[next] && next>=1000)//这里要保证是4位数字
                {//有可能17是素数,这样很可能就减少了步数到b,而4位数字的话,可能步数就得多一点了
                    vis[next]=1;
                    Q.push(next);
                    step[next]=step[head]+1;
                }
            }
        }
    }
    return 0;
}

int main()
{
    int T,a,b;
    init();
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&a,&b);
        if(a==b) printf("0\n");
        else
        {
            int ans=BFS(a,b);
            if(ans==0) printf("Impossible\n");
            else printf("%d\n",ans);
        }
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/zsboy/archive/2013/02/07/2908637.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值