码迷,mamicode.com
首页 > Web开发 > 详细

POJ-3126 暑假集训-搜索进阶F题http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/F

时间:2015-07-18 18:24:59      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

 

经验就是要认真细心,要深刻理解。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]=‘\0‘;

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;
}

POJ-3126 暑假集训-搜索进阶F题http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/F

标签:

原文地址:http://www.cnblogs.com/wazqWAZQ1/p/4654262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!