好久没有刷UVa了,没想到居然一次AC,代码几乎与rujia没有什么太大的区别
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[20],n,cnt; 6 bool isprime(int m) 7 { 8 for(int i=2;i<m;i++) 9 if(m%i==0) return 0; 10 return 1; 11 } 12 void fuc(int cur,bool used[20]) 13 { 14 if(cur==n) 15 { 16 printf("%d",a[1]); 17 for(int i=2;i<=n;i++) 18 printf(" %d",a[i]); 19 printf(" "); 20 return; 21 } 22 for(int i=2;i<=n;i++) 23 { 24 if(!used[i]&&isprime(a[cur]+i)) 25 { 26 if((cur==n-1&&isprime(1+i))||cur<n-1) 27 { 28 a[cur+1]=i; 29 used[i]=1; 30 fuc(cur+1,used); 31 used[i]=0; 32 } 33 } 34 } 35 } 36 int main() 37 { 38 while(~scanf("%d",&n)) 39 { 40 memset(a,0,sizeof(a)); 41 if(++cnt>1) printf(" "); 42 printf("Case %d: ",cnt); 43 bool used[20]={}; 44 a[1]=1; 45 used[1]=1; 46 fuc(1,used); 47 } 48 }