怎么今天都是compile error 呢,奇怪啊
我的代码
#include "iostream"#include "string.h"#include "queue"#include "math.h"#include "algorithm"using namespace std;struct Point{ char list[5]; int step;};int chang(char list[5]){ int i,total=0; for(i=0;i<4;i++){ int a=(int)(list[i]-'0'); int b=pow(10,3-i); total+=a*b; } return total;}void chang1(int a,char list[5]){ for(int i=3;i>=0;i--){ list[i]='0'+a%10; a=a/10; } list[4]='\0';}int main(){ int set[10000],num[10000],i,j,ncase,set1[10000]; char list1[5],list2[5]; memset(set,0,sizeof(set)); memset(set1,0,sizeof(set1)); for(i=2;i<10000;i++){ if(set[i]==0){ for(j=2*i;j<10000;j=j+i){ set[j]=1; } } } cin>>ncase; while(ncase--){ int a,b,flag=0; cin>>a>>b; chang1(a,list1); chang1(b,list2); //cout<<<' '< < q; q.push(pt); memset(set1,0,sizeof(set1)); while(!q.empty()){ tem=q.front(); if(strcmp(tem.list,list2)==0){cout< <
人家的代码
// POJ3126.cpp : Defines the entry point for the console application.//#include#include using namespace std;int main(int argc, char* argv[]){ //init prime table bool prime[10001]; memset(prime,1,sizeof (prime)); prime[0] = false;prime[1] = false; for (int i = 2; i < 5000; ++i) { int k = 2; int next; while((next = (k++) * i) < 10000) prime[next] = false; } int cases; cin >> cases; int beg, end; int step; int visited[10001]; int base[4]= { 1, 10, 100, 1000}; for (int c = 0; c < cases; ++c) { scanf("%d %d", &beg, &end); memset(visited, -1, sizeof(visited)); queue q; q.push(beg); visited[beg] = 0; step = -1; while (!q.empty()) { int cur = q.front(); q.pop(); if (cur == end) { step = visited[cur]; break; } for (int i = 0; i < 4; ++i) { for (int j = 0; j < 10; ++j) { int l = cur / (base[i] * 10); int r = cur % base[i]; int num = l * base[i] * 10 + j * base[i] + r; if (num > 1000 && num != cur && prime[num] == true && visited[num] == -1) { q.push(num); visited[num] = visited[cur] + 1; } } } } if (step == -1)cout << "Impossible\n"; else cout << step << endl; } return 0;}