zoukankan      html  css  js  c++  java
  • POJ-3126 暑假集训-搜索进阶F题

     http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/F

    经验就是要认真细心,要深刻理解。num

    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<ctype.h>
    #include<queue>
    using namespace std;
    #define N 11000

    typedef struct yes
    {
    int l, m;//location, money;
    }YES;
    YES s, e, p, q;

    int isprime(int m);
    bool visit[N];
    void BFS();

    int main()
    {
    int n;//number
    cin >> n;
    while(n--)
    {
    cin >> s.l >> e.l;
    s.m=0;
    BFS();
    }
    return 0;
    }

    void BFS()
    {
    int i, j, num, figure;
    char s1[5], s2[5];

    memset(visit, false, sizeof(visit));
    queue<YES>que;
    que.push(s);
    visit[s.l]=true;


    while(que.size())
    {
    p=que.front();
    que.pop();

    if(p.l==e.l)
    {
    cout << p.m << endl;
    return;
    }

    figure=p.l;
    for(i=3; i>=0; i--)
    {
    s1[i]=figure%10+'0';
    figure/=10;
    }
    s1[4]='';

    for(i=0; i<4; i++)
    {
    strcpy(s2, s1);
    for(j=0; j<=9; j++)
    {
    if((i==0&&j==0)||s2[i]==j+'0')
    continue;
    s2[i]=j+'0';

    num=atoi(s2);
    if(num&1==0)
    continue;
    //if(num%2==0)
    //continue;

    if(isprime(num)&&!visit[num])
    {
    visit[num]=true;
    q.l=num;
    q.m=p.m+1;
    que.push(q);
    }
    }
    }
    }
    cout << "Impossible" << endl;
    }
    int isprime(int m)
    {
    int i;
    int k=sqrt(m);
    k=int(k);
    for(i=2; i<=k; i++)
    if(m%i==0)
    return 0;
    return 1;
    }

  • 相关阅读:
    php lesson1
    微信红包算法java版本
    spring注解
    Java时间戳
    集成环信 服务器端遇见的坑:关于Request body is invalid.解决
    环信java后台发送消息时提示msg 应该为JSONObject 的坑
    jboss设置允许外网访问
    redis实现单点登录
    qq在线客服
    图片纯css控制宽高比
  • 原文地址:https://www.cnblogs.com/wazqWAZQ1/p/4654262.html
Copyright © 2011-2022 走看看