素数环, 经典的搜索题。
学了线段树之后,对递归有了一些体会,写这一题还是可以的。
ans的地方表示的是,寻找下一个数、
素数环,经典的搜索题。学了线段树之后,对递归有了一些体会,写这一题还是可以的。ans的地方表示的是,寻找下一个数、#includeint ss[41],visit[21],b[21];void getss(){ int i,j; for(i=1;i<=40;i++) ss[i]=1; ss[1]=0; for(i=2;i<=7;i++) for(j=i*i;j<=40;j=j+i) ss[j]=0;}void bfs(int ans,int n){ int i; if(ans==n+1&&ss[b[ans-1]+1]==1) { for(i=1;i<=n;i++) { if(i==1)printf("%d",b[i]); else printf(" %d",b[i]); } printf("\n"); return ; } for(i=2;i<=n;i++) { if(visit[i]==0) if(ss[i+b[ans-1]]==1) { visit[i]=1; b[ans]=i; bfs(ans+1,n); visit[i]=0; } }} int main(){ int i,t=0,n; getss(); while(scanf("%d",&n)>0) { for(i=1;i<=n;i++) visit[i]=0; visit[1]=1; b[1]=1; printf("Case %d:\n",++t); if(n%2==1) {printf("\n");continue;} //当输入为奇数的数,不要搜了。 bfs(2,n); printf("\n"); } return 0;}