hdu 1016
这个是暑假时候写的一道题,现在拿出来看下,当时记得是在nyoj上看的......素数环的问题....题目不难
但是提交的时候注意下格式.....有一个空行,然后每个数之间是一个空格,最后一个不需要(坑了)........
权当复习吧,hdu刚好过百了.....不过有好多题目写了解题报告,没有提交过.......汗!!!!!
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <ctype.h> using namespace std; int out[30],n,flag[30]; bool pr[40]; int ss=0; void init() { pr[2]=pr[3]=pr[5]=pr[7]=pr[11]=pr[13]=pr[17]=pr[19]=pr[23]=pr[29]=pr[31]=pr[37]=true; } bool prime(int a) { for(int i=2;i*i<=a;i++) if(a%i==0) return true; return false; } void dfs(int x,int deep) { int i; if(deep==n) { out[deep]=x; if(!prime(out[1]+out[n])){ for(i=1;i<=n;i++) if(i==n) cout<<out[i]; else cout<<out[i]<<" "; cout<<endl; } } else { out[deep]=x; flag[x]=1; for(i=1;i<=n;i++) if(flag[i]==0&&pr[i+x]) dfs(i,deep+1); flag[x]=0; } } int main() { memset(pr,false,sizeof(pr)); init(); while(cin>>n){ cout<<"Case "<<++ss<<":\n"; memset(flag,0,sizeof(flag)); dfs(1,1); cout<<endl; } return 0; }