poj解题报告——3126
2014-12-21 14:58
405 查看
这题打表就挺好,大致题意:给定两个四位素数a b,要求把a变换到b,变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数与前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能重复,求从a到b最少需要的变换次数。无法变换则输出Impossible。
代码如下
#include<stdio.h>
#include<string.h>
int vir[10010],fa[10010],q[10010];
int dir[4]={10,100,1000,10000};
int primes[10000];
int start,end,i,j;
void prime(int *p)
{
for(i=2;i<10000;i++)
p[i]=1;
for(i=2;i<10000;i++)
{
if(p[i])
{
for(j=i+i;j<10000;j+=i)
p[j]=0;
}
}
}
int bfs(int x)
{
int front=0,rear=0,tot=0,ok=0,son;
memset(vir,0,sizeof(vir));
q[rear++]=x;
while(front<rear)
{
x=q[front++];
for(i=0;i<4;i++)
{
for(j=0;j<10;j++)
{
if(i==3&&j==0)
continue;
son=j*dir[i]/10+(x/dir[i])*dir[i]+x%(dir[i]/10);
if(!vir[son]&&primes[son])
{
q[rear++]=son;
vir[son]=1;
fa[son]=x;
if(son==end)
{
ok=1;
break;
}
}
}
if(ok)
break;
}
if(ok)
break;
}
while(son!=start)
{
son=fa[son]; tot++;
}
return tot;
}
void main()
{
int n;
prime(primes);
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
scanf("%d%d",&start,&end);
printf("%d\n",bfs(start));
}
}
}
代码如下
#include<stdio.h>
#include<string.h>
int vir[10010],fa[10010],q[10010];
int dir[4]={10,100,1000,10000};
int primes[10000];
int start,end,i,j;
void prime(int *p)
{
for(i=2;i<10000;i++)
p[i]=1;
for(i=2;i<10000;i++)
{
if(p[i])
{
for(j=i+i;j<10000;j+=i)
p[j]=0;
}
}
}
int bfs(int x)
{
int front=0,rear=0,tot=0,ok=0,son;
memset(vir,0,sizeof(vir));
q[rear++]=x;
while(front<rear)
{
x=q[front++];
for(i=0;i<4;i++)
{
for(j=0;j<10;j++)
{
if(i==3&&j==0)
continue;
son=j*dir[i]/10+(x/dir[i])*dir[i]+x%(dir[i]/10);
if(!vir[son]&&primes[son])
{
q[rear++]=son;
vir[son]=1;
fa[son]=x;
if(son==end)
{
ok=1;
break;
}
}
}
if(ok)
break;
}
if(ok)
break;
}
while(son!=start)
{
son=fa[son]; tot++;
}
return tot;
}
void main()
{
int n;
prime(primes);
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
scanf("%d%d",&start,&end);
printf("%d\n",bfs(start));
}
}
}
相关文章推荐
- POJ 3126 Prime Path 解题报告(BFS & 双向BFS)
- POJ_3126Prime Path解题报告
- POJ 3126 Prime Path 解题报告(BFS & 双向BFS)
- POJ-3126 Prime Path 解题报告
- 2018.1.27【POJ - 3126】解题报告(BFS,换门牌号,素数筛)
- Prime Path(POJ 3126)解题报告
- POJ - 3126 Prime Path解题报告
- 【原】 POJ 3126 Prime Path 筛素数+BFS单源无权最短路径 解题报告
- POJ 3126解题报告
- POJ 3160 Father Christmas flymouse 解题报告
- POJ3009Curling 2.0解题报告
- POJ 3003 解题报告
- POJ-3087___Shuffle'm Up——解题报告
- POJ1009解题报告
- 【原】 POJ 1088 滑雪 递归+memoization 解题报告
- 【原】 POJ 1157 LITTLE SHOP OF FLOWERS 动态规划 解题报告
- poj 1037解题报告
- 【原】 POJ 2352 Stars 树状数组 解题报告
- POJ 3041 解题报告
- 【原】 POJ 3176 Cow Bowling 动态规划 解题报告