hdu1016(素数环)

来源:互联网 发布:黑客网络分析软件 编辑:程序博客网 时间:2024/04/28 02:18

终于老老实实做了一道题,不容易啊。偷笑


#include<stdio.h>#include<string.h>#include<ctype.h>#include<stdlib.h>#include<math.h>int n,a[25],vis[25];int isprime(int x){int i;for(i=2;i<x;i++)if(x%i==0)return 0;return 1;}void dfs(int x,int y)//x是已经在素数环上的个数,y是素数环上顺时针的最后一个元素{int j;if(x==n&&isprime(a[0]+a[n-1])) {for(j=0;j<n-1;j++)printf("%d ",a[j]);printf("%d\n",a[n-1]);}for(j=0;j<n;j++){if(!vis[j]&&isprime(y+j+1)){vis[j]=1;a[x]=j+1;dfs(x+1,j+1);vis[j]=0;}}}main(){int count=1;//freopen("D:\\o.txt","r",stdin);while(scanf("%d",&n)!=EOF){printf("Case %d:\n",count++);memset(vis,0,sizeof(vis));memset(a,0,sizeof(a));vis[0]=a[0]=1;dfs(1,1);printf("\n");}return 0;}


原创粉丝点击