• 素数路


    素数路

    题目描述

    已知一个四位的素数,要求每次修改其中的一位,并且要保证修改的结果还是一个素数,还不能出现前导零。你要找到一个修改数最少的方案,得到我们所需要的素数。
    例如把1033变到8179,这里是一个最短的方案:
    1033
    1733
    3733
    3739
    3779
    8779
    8179
    修改了6次。

    输入

    1行,两个四位的素数(没有前导零),表示初始数和目标数。

    输出

    一个数,表示最少的操作次数。如果不可能,输出“Impossible”。

    样例输入

    1033 8179
    

    样例输出

    6
    bfs搜一下
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <cstdio>
    using namespace std;
    typedef pair<int, int>P;
    int a[3000], n = 0, x, y;
    
    int ok(int n, int m){
        int cnt = 0;
        while(n > 0){
            if(n%10 == m%10) cnt++;
            n /= 10;
            m /= 10;
        }
        return cnt;
    }
    void init(){
          for(int i = 1000; i <= 10000; i++){
            int flag = 1;
            for(int j = 2; j*j <= i; j++){
                if(i % j == 0){
                    flag = 0;
                    break;
                }
            }
            if(flag){
                a[n++] = i;
            }
        }
    }
    int bfs(){
        int vis[10003];
        memset(vis, 0, sizeof(vis));
        queue<P>s;
        s.push(P(x, 0));
        vis[x] = 1;
        while(!s.empty()){
            P p = s.front();
            s.pop();
            if(y == p.first){
                return p.second;
            }
            for(int i = 0; i < n; i++){
                if(vis[a[i]] == 0 && ok(p.first, a[i]) == 3){
                   // printf("%d
    ", a[i]);
                    vis[a[i]] = 1;
                    s.push(P(a[i], p.second+1));
    
                }
            }
        }
        return -1;
    }
    int main()
    {
        init();
        cin >> x >> y;
        int ans = bfs();
        if(ans == -1){
            printf("Impossible
    ");
        }else printf("%d
    ", ans);
    
        return 0;
    }
    我好菜啊
     
  • 相关阅读:
    杂七杂八注意
    数字和表达式
    小总结
    层级定位
    webdriver对象定位方法
    自动化测试第一季-selenium + python(环境搭建与基础代码解释)
    补基础—.—
    1-13 代理ARP和RARP
    Nginx/LVS/HAProxy负载均衡软件的优缺点详解
    分布式集群系统下的高可用session解决方案
  • 原文地址:https://www.cnblogs.com/cshg/p/5720235.html
Copyright © 2020-2023  润新知