2019-01-28POJ - 3126

include<iostream>

include<cstring>

using namespace std;
class number
{public:
long long p; long long s;
};
long long biao[10000];
bool biaoo(long long a)
{
if (a == 2 || a == 3)
{
return 1;
}
if (a % 2 == 0)
return 0;
for (int i = 2; i*i <= a; i++)
{
if (a%i == 0)return 0;
}
return 1;
}
bool visit[20000];
number queue[20000];
long long bfs(long long a, long long b)
{
memset(visit, 0, sizeof(visit));
long long tou=0, wei=0;
queue[0].p = a;
queue[0].s = 0;
visit[a] = 1;
wei++;
while (tou < wei)
{
number tis = queue[tou];
tou++;//可以放在最后面;
if (tis.p == b)
{
return tis.s;
}
for (long long i = -(tis.p % 10); tis.p % 10 + i >= 0 && tis.p % 10 + i <= 9; i++)
{
long long x = tis.p + i;
if (x != tis.p && visit[x] == 0 && biao[x] == 1)
{
visit[x] = 1;
queue[wei].p = x;
queue[wei].s = tis.s+ 1; wei++;

        }
    }
    for (long long i = -((tis.p/10) % 10); (tis.p / 10) % 10 + i >= 0 && (tis.p / 10) % 10 + i <= 9; i++)
    {
        long long x = tis.p + i*10;
        if (x != tis.p && visit[x] == 0 && biao[x] == 1)
        {
            visit[x] = 1;
            queue[wei].p = x;
            queue[wei].s = tis.s + 1; wei++;

        }
    }
    for (long long i = -((tis.p/100) % 10); (tis.p / 100) % 10 + i >= 0 && (tis.p / 100) % 10 + i <= 9; i++)
    {
        long long x = tis.p + i*100;
        if (x != tis.p && visit[x] == 0 && biao[x] == 1)
        {
            visit[x] = 1;
            queue[wei].p = x;
            queue[wei].s = tis.s + 1; wei++;

        }
    }
    for (long long i = -((tis.p/1000))+1; (tis.p / 1000) + i > 0 && (tis.p / 1000)  + i <= 9; i++)
    {
        long long x = tis.p + i*1000;
        if (x != tis.p && visit[x] == 0 && biao[x] == 1)
        {
            visit[x] = 1;
            queue[wei].p = x;
            queue[wei].s = tis.s + 1; wei++;
        }
    }
    
}
return -1;

}

int main()
{
for (int i = 1000; i <= 10000; i++)
{
biao[i]= biaoo(i);
}
long long n,a,b;
cin >> n;
while (n--)
{
cin >> a >> b;
if (bfs(a, b) == -1)
cout << "Impossible" << endl;
else
cout << bfs(a, b)<<endl;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,187评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,183评论 0 10
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    AIM外星人阅读 4,997评论 0 1
  • 王文娟 https://www.jianshu.com/p/b360a4b3d195?utm_campaign=h...
    娟妹纸李娟阅读 1,148评论 0 0
  • 今天,我和小美一起玩。第一个游戏拍电影。可是我们没拍好。第二个游戏成功了是烧烤。它的材料是木棍,果子,和树叶。准备...
    霁桉阅读 1,846评论 0 2

友情链接更多精彩内容