您的位置:首页 > 其它

HDOJ1016(标准dfs)

2015-07-27 17:45 302 查看
标准DFS模板:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int isPrime[40]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1};
int vis[21];
int A[21];

void dfs(int index,int n)
{
if(index==n&&isPrime[A[index-1]+A[0]])
{
printf("%d",A[0]);
for(int i=1;i<n;i++)
printf(" %d",A[i]);
printf("\n");
return ;
}
for(int i=2;i<=n;i++)
{
if(!vis[i]&&isPrime[i+A[index-1]])
{
vis[i]=1;
A[index]=i;
dfs(index+1,n);
vis[i]=0;
}
}

}

int main()
{
int n;
int T=0;
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",++T);
if(n%2==1)
continue;
memset(A,0,sizeof(A));
A[0]=1;
dfs(1,n);
printf("\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: