啃爹的输出格式!PE了好几次!
#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=16;int vis[maxn],A[maxn]; int n;bool isp(int temp){ //判断是否为素数,是则返回true; int flag=1; for(int i=2;i<=sqrt(temp);i++){ if(temp%i==0){ flag=0;break; } } if(flag)return true; else return false;}void dfs(int cur){ if(cur==n && isp(A[0]+A[n-1])){ PRintf("%d",A[0]); for(int i=1;i<n;i++)printf(" %d",A[i]); printf("/n"); } else for(int i=2;i<=n;i++){ //尝试放置每个数i; if(!vis[i] && isp(A[cur-1]+i)){ //如果i没有被使用过,并且与前一个数之和为素数 A[cur]=i; vis[i]=1; //使用标志 dfs(cur+1); vis[i]=0; //一定要改回 } }}int main(){ int count=0; while(scanf("%d",&n)==1){ memset(vis,0,sizeof(vis)); A[0]=1; if(count++)printf("/n"); printf("Case %d:/n",count); dfs(1); } return 0;}
新闻热点
疑难解答