HDU-1016 dfs
2013-07-25 15:11
211 查看
这题先以为还以为是链表。想多了,只不过是个简单的搜索就可以了。
#include<stdio.h>
#include<math.h>
#include<string.h>
int n;
int p[30],num[30],vis[30];
void prime() //筛选素数O(n)的时间复杂度
{
memset(p,0,sizeof(p));
for(int i=4;i<100;i+=2)
p[i]=1;
int k=(int)sqrt(100.0);
for(int i=3;i<k;i+=2){
if(p[i]) continue;
for(int j=i*i;j<100;j+=2*i)
p[j]=1;
}
}
void dfs(int pos)
{
if(pos==n){
if(!p[num[pos]+1]){
for(int i=1;i<=n;i++)
printf(i==1? "%d":" %d",num[i]);
printf("\n");
}
return ;
}
else
for(int i=2;i<=n;i++)
if(!vis[i]&&!p[num[pos]+i]){
num[pos+1]=i;
vis[i]=1;
dfs(pos+1);
vis[i]=0;
}
}
int main()
{
prime();
num[1]=1;
int cas=1;
while(scanf("%d",&n)!=EOF){
memset(vis,0,sizeof(vis));
printf("Case %d:\n",cas++);
dfs(1);
printf("\n");
}
}
#include<stdio.h>
#include<math.h>
#include<string.h>
int n;
int p[30],num[30],vis[30];
void prime() //筛选素数O(n)的时间复杂度
{
memset(p,0,sizeof(p));
for(int i=4;i<100;i+=2)
p[i]=1;
int k=(int)sqrt(100.0);
for(int i=3;i<k;i+=2){
if(p[i]) continue;
for(int j=i*i;j<100;j+=2*i)
p[j]=1;
}
}
void dfs(int pos)
{
if(pos==n){
if(!p[num[pos]+1]){
for(int i=1;i<=n;i++)
printf(i==1? "%d":" %d",num[i]);
printf("\n");
}
return ;
}
else
for(int i=2;i<=n;i++)
if(!vis[i]&&!p[num[pos]+i]){
num[pos+1]=i;
vis[i]=1;
dfs(pos+1);
vis[i]=0;
}
}
int main()
{
prime();
num[1]=1;
int cas=1;
while(scanf("%d",&n)!=EOF){
memset(vis,0,sizeof(vis));
printf("Case %d:\n",cas++);
dfs(1);
printf("\n");
}
}
相关文章推荐
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016--Prime Ring Problem【DFS】
- Hdu-1016 Prime Ring Problem【DFS】
- [hdu 1016] Prime Ring Problem(剪枝dfs)
- HDU-1016-Prime Ring Problem( C && 经典DFS题 )
- HDU 1016 Prime Ring Problem(dfs)
- hdu 1016 Prime Ring Problem(dfs)
- HDU_1016 Prime Ring Problem(素数环|经典回朔|DFS)
- HDU 1016 Prime Ring Problem --- 经典DFS
- HDU 1016 Prime Ring Problem(DFS)
- Hdu-1016-Prime Ring Problem [dfs]
- hdu 1016 Prime Ring Problem(dfs,素数环)
- hdu--1016 素素环(dfs)
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016(Prime Ring Problem)DFS
- HDU--1016:Prime Ring Problem (DFS)
- HDU 1016 Prime Ring Problem(DFS)
- hdu 1016 Prime Ring Problem (dfs)
- hdu 1016 Prime Ring Problem【DFS】
- HDU 1016 Prime Ring Problem(经典DFS+回溯)