题目:http://poj.org/problem?id=3126
题意:给你两个四位数,a和b,然后改变四位中的一位,从a改变到b,每次得到的数必须是素数,求最小改变次数
注意:初始化问题,就是队列一开始一定要是空的。。。(wa了好几次)
代码:
View Code
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 queue q; 7 int num[10010],m,n; 8 int vis[10010]; 9 int head,tail; 10 int flag; 11 int pan(int a) 12 { 13 int i; 14 int k=sqrt(double(a)); 15 for(i=2;i<=k;i++) 16 { 17 if(a%i==0) 18 return 0; 19 } 20 return 1; 21 } 22 void bfs(int a) 23 { 24 int s; 25 int i; 26 for(i=1;i<=9;i++) 27 { 28 s=i*1000+a%1000; 29 if(s==n) 30 { 31 cout< < >t; 98 while(t--) 99 {100 while(!q.empty())101 {102 q.pop();103 }104 cin>>m>>n;105 int s;106 if(m==n)107 {108 flag=1;109 cout<<"0"<