• poj 3126 简单广搜题


    废话不多说,题目要求是给出一个数n,有n组数据,每组有两个数,变动第一个数据的个,十,百,千位,使最少的步骤

    成为第二个数据;代码有些菜;

    #include <iostream>
    #include <queue>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int visited[10000];
    queue <int> vi;
    int q;
    int step[10000];
    bool isprim(int n)//判断是否素数;
    {
    for (int i = 2; i <= sqrt(n*1.0); ++i)
    {
    if (n % i == 0)
    return false;
    }
    return true;
    }
    int main()
    {
    int t,m,n,first,next,temp;
    cin>>t;
    while(t--)
    {
    memset(visited,0,sizeof(visited));
    memset(step,0,sizeof(step));
    cin>>m>>n;
    vi.push(m);
    step[m]=0;
    visited[m]=1;
    while(!vi.empty())
    {
    first = vi.front();
    vi.pop();
    // if(first == n)break;(由于多了这一条,错了很久,头疼死了)
    for(int i = 0; i <= 9; i ++)//对数据变动,由1到9循环;
    {
    for(int j = 1; j <=4; j ++)//个十百千位分别各自变动;
    {
    if(j == 1 && i!= 0)
    {
    next = i*1000+(first -first/1000*1000);
    if(isprim(next) && !visited[next])//判断千位变动是否为素数,是否出现过,如果是素数且未出现过,加入队列,标记;以下同这一样;

    {
    vi.push(next);
    visited[next]=1;
    step[next]=step[first]+1;

    }
    }
    if(j == 2)
    {
    next = first/1000*1000+i*100+(first - first/100*100);

    if(isprim(next) && !visited[next])
    {
    vi.push(next);
    visited[next]=1;
    step[next]=step[first]+1;

    }

    }

    if(j ==3)
    {
    next = first/100*100+i*10+(first-first/10*10);


    if(isprim(next) && !visited[next])
    {
    vi.push(next);
    visited[next]=1;
    step[next]=step[first]+1;
    }

    }
    if(j == 4)
    {
    next = first/10*10+i;

    if(isprim(next)&& !visited[next])
    {
    vi.push(next);
    visited[next]=1;
    step[next]=step[first]+1;
    }
    }

    }

    }
    if(visited[n])//判断n出现时在第几步;
    temp = step[n];

    }
    cout<<temp<<endl;

    }
    }

  • 相关阅读:
    jvm内存溢出问题
    表单提交后台正则表达式验证
    java项目改为web项目
    图片按像素压缩
    系统和压缩内存占用空间大
    teamview修改id
    新浪天气api
    SpringBoot+MySql+Mybatis+ thymeleaf 搭建个人博客
    FFmpeg的简单使用
    禁止f12及浏览器右键查看
  • 原文地址:https://www.cnblogs.com/lfyy/p/2694335.html
Copyright © 2020-2023  润新知