• HDU 1016 DFS


    很简单的深搜 只要看出来是深搜...

    注意判断最后一点是否与加一为质数

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #include<math.h>
    using namespace std;
    int n;
    int ans[30];
    bool vis[30];
    bool ok[105];
    void init()///素数打表
    {
        memset(ok,true,sizeof(ok));
        for(int i=2;i<=100;i++)
        {
            for(int k=2;k*i<=100;k++)
            {
                ok[k*i]=false;
            }
        }
        return ;
    }
    bool check(int a,int b)
    {
        if(ok[a+b]==true)
            return true;
        else return false;
    }
    void dfs(int w,int a)
    {
        vis[a]=false;
        ans[w++]=a;
        if(w==n&&check(a,1))
        {
            for(int i=0;i<w;i++)
            {
                printf("%d",ans[i]);
                if(i==w-1)
                    printf("
    ");
                else printf(" ");
            }
            return ;
        }
        for(int i=1;i<=n;i++)
        {
            if(vis[i]==true)
            {
                if(check(i,a))
                {
                    dfs(w,i);
                    vis[i]=true;
                }
            }
        }
        return ;
    }
    int main(){
    int tt=0;
    init();
    while(~scanf("%d",&n))
    {
        tt++;
        printf("Case %d:
    ",tt);
        memset(vis,true,sizeof(vis));
        dfs(0,1);
        printf("
    ");
    }
    }
    

      

  • 相关阅读:
    【AGC010E】Rearranging(博弈,图论,拓扑排序)
    【ARC074F】Lotus Leaves(最小割)
    【ARC069F】Flags(2-SAT,Tarjan,线段树优化建图)
    [CTS 2019] 氪金手游
    HDU
    LOJ
    LOJ
    [TJOI 2015] 概率论
    [AGC 018F] Two Trees
    LOJ
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5321714.html
Copyright © 2020-2023  润新知