• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Hug_Sea
博客园    首页    新随笔    联系   管理    订阅  订阅

HDU-1016 Prime Ring Problem

题意:给定一个数,输出素数环。

思路:dfs。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016

 

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <string>
 5 #include <algorithm>
 6 #include <iostream>
 7 using namespace std;
 8 const int N=110;
 9 
10 bool prime[N],flag[N];
11 int vis[N];
12 int n;
13 
14 void dfs(int p,int cnt){
15     if(cnt==n){
16         if(!prime[vis[n]+1])
17             for(int i=1;i<=n;i++)
18                 printf(i==n?"%d\n":"%d ",vis[i]);
19         return ;
20     }
21     for(int i=2;i<=n;i++){
22         if(!flag[i]&&!prime[p+i]){
23             vis[cnt+1]=i;
24             flag[i]=true;
25             dfs(i,cnt+1);
26             flag[i]=false;
27         }
28     }
29 }
30 
31 int main(){
32     
33 //    freopen("data.in","r",stdin);
34 //    freopen("data.out","w",stdout);
35     
36     memset(prime,false,sizeof(prime));
37     for(int i=2;i<=N;i++){
38         if(prime[i]) continue;
39         for(int j=2;j*i<=N;j++)
40             prime[j*i]=true;
41     }
42     int iCase=1;
43     while(scanf("%d",&n)!=EOF){
44         printf("Case %d:\n",iCase++);
45         memset(vis,0,sizeof(vis));
46         vis[1]=1;
47         memset(flag,false,sizeof(flag));
48         dfs(1,1);
49         puts("");
50     }
51     return 0;
52 }
posted @ 2012-06-15 22:04  Hug_Sea  阅读(132)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3