Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >poj 3126 Prime Path (广搜)

poj 3126 Prime Path (广搜)

作者头像
用户1624346
发布于 2018-04-17 08:08:38
发布于 2018-04-17 08:08:38
54500
代码可运行
举报
文章被收录于专栏:calmoundcalmound
运行总次数:0
代码可运行

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-02-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
docker 部署 hadoop集群
sudo docker cp apache-zookeeper-3.5.5.tar.gz cluster-slave1:/root/tar
程序员朱永胜
2023/08/17
3470
docker 部署 hadoop集群
Hadoop 2.2.0的安装配置
根据网上的文章搭建了Hadoop 2.2.0的环境,具体内容如下,备用后续自己做参考。
星哥玩云
2022/06/29
2930
HDFS--HA部署安装:修改配置文件 测试集群工作状态的一些指令
/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/
Maynor
2021/04/09
3620
OushuDB 安装与升级之安装 HDFS
由于hadoop依赖于特定版本的snappy,请先卸载snappy确保安装的顺利进行:
用户7454708
2023/05/08
2070
OushuDB 安装与升级之安装 HDFS
Hadoop完全分布式搭建部署
1)在各个JournalNode节点上,输入以下命令启动journalnode服务:(前提zookeeper集群已启动)
星哥玩云
2022/08/08
4880
Hadoop完全分布式搭建部署
hadoop之完全分布式集群配置(centos7)
克隆好之后需要做三件事:1、更改主机名称 2、修改ip地址 3、将ip地址和对应的主机号加入到/etc/hosts文件中
西西嘛呦
2020/08/26
4840
hadoop之完全分布式集群配置(centos7)
Hadoop框架:HDFS高可用环境配置
在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameNode的热备来消除单节点故障问题,如果单个节点出现故障,可通过该方式将NameNode快速切换到另外一个节点上。
知了一笑
2020/11/02
4580
Hadoop框架:HDFS高可用环境配置
原 Spark On Yarn完全分布式搭
Spark On Yarn完全分布式搭建     Spark On Yarn的搭建分为三个阶段,第一个是Zookeeper集群的搭建,第二是Hadoop集群的搭建,第三是Spark集群的搭建。所以以下将按照这三个步骤来给大家进行展示Spark On Yarn完全分布式搭建。 一、准备 1、软件及版本     1. jdk-8u65-linux-x64.tar.gz     2. scala-2.11.0.tgz     3. zookeeper-3.4.7.tar.gz     4. hadoop-2.7.
云飞扬
2018/05/17
1.7K0
Hadoop集群配置
hadoop集群配置 1.多台机器ssh免密配置 修改用户名 # 1.更改hostname hostnamectl --static set-hostname <主机名> scp传输文件 scp <文件路径> <目标账号@地址>: 目标路径 scp /etc/hosts root@hadoop2: /etc/ ssh免密登录 # 配置公钥 ssh-keygen # 配置免密登录 ssh-copy-id <目标ip> 2. 多台主机时间核对 所有机器安装ntp yum -y
俺也想起舞
2019/07/24
1.4K0
快速带你搭建Hadoop的HA集群!(确定不来看看吗?)
相信大家在看了前面一篇《Hadoop High Availability (高可用)详细讲解》之后,大家一定在想怎么搭建Hadoop HA的集群呢? 不要着急 ,小生接下来就带大家快速搭建一下(#.#)。
刘浩的BigDataPath
2021/04/13
4920
快速带你搭建Hadoop的HA集群!(确定不来看看吗?)
Hadoop完全分布式安装
完全分布式安装部署,其实步骤上来说与伪分布式没有太大的区别,主要增加2台虚拟机部署称为一个3台的集群
我脱下短袖
2019/12/21
4770
hadoop搭建完全分布式集群
后面的启动步骤可以用一步来代替,进入hadoop安装目录的sbin目录,执行:start-dfs.sh 。但建议还是按部就班来执行,比较可靠。
许喜朝
2020/10/27
4960
快速学习-HDFS HA高可用
1)所谓HA(High Available),即高可用(7*24小时不中断服务)。 2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。 3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 4)NameNode主要在以下两个方面影响HDFS集群 NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启 NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用 HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。
cwl_java
2020/02/21
7800
快速学习-HDFS HA高可用
Hadoop基础教程-第9章 HA高可用(9.2 HDFS 高可用配置)
因为前面我们已经配置启动了普通的Hadoop相关服务,需要先停止相关服务并清除数据。 (1)停止Hadoop服务 首先停止YARN
程裕强
2022/05/06
3010
【Hadoop 分布式部署 十:配置HDFS 的HA、启动HA中的各个守护进程】
官方参考 配置 地址 :http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
梅花
2020/09/28
1.1K0
Hadoop完全分布式搭建
一、介绍 Hadoop2.0中,2个NameNode的数据其实是实时共享的。新HDFS采用了一种共享机制,Quorum Journal Node(JournalNode)集群或者Nnetwor
用户1263954
2018/06/22
1.4K0
hadoop2集群环境搭建
在查询了很多资料以后,发现国内外没有一篇关于hadoop2集群环境搭建的详细步骤的文章。
Hongten
2018/12/04
8090
hadoop2集群环境搭建
Hadoop高可用集群部署指南
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
KenTalk
2018/09/11
1.3K1
Hadoop高可用集群部署指南
Hadoop高可用(HA)集群搭建
HA:High Available,高可用 在Hadoop 2.0之前,在HDFS集群中NameNode存在单点故障 (SPOF:A Single Point of Failure) 对于只有一个NameNode的集群,如果NameNode机器出现故障(比如宕机或是软件、硬件升级),那么整个集群将无法使用,直到NameNode重新启动
CoderJed
2018/09/13
4.4K0
Hadoop高可用(HA)集群搭建
Hadoop-2.7.2分布式安装手册
当前版本的Hadoop已解决了hdfs、yarn和hbase等单点,并支持自动的主备切换。
一见
2019/03/14
1.9K0
相关推荐
docker 部署 hadoop集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验