zoukankan      html  css  js  c++  java
  • HDOJ-1016 Prime Ring Problem(DFS)

    Description:输入一个数n,求1~n这n个数字组成的环的不同种类数,环必须满足的条件:相邻两个数之和为素数

    Sample Input
    
    6
    8
    
    Sample Output
    
    Case 1:
    1 4 3 2 5 6
    1 6 5 2 3 4
    
    Case 2:
    1 2 3 8 5 6 7 4
    1 2 5 8 3 4 7 6
    1 4 7 6 5 8 3 2
    1 6 7 4 3 8 5 2
    

     也是DFS模板题,代码如下:

    #include"iostream"
    #include<cstdio>
    #include<cmath>
    #include<string.h>
    using namespace std;
    int n;
    int a[50];
    int visit [50];
    int isprime(int k) //判断素数
    {
        int n=sqrt(double(k));
        int i;
        for(i=2;i<=n;i++)
            if(k%i==0) return 0;
        return 1;
    }
    void dfs(int count)  //深搜
    {
        if(count==n&&isprime(a[n-1]+a[0]))
        {
            int i;
            for(i=0;i<n-1;i++)
                cout<<a[i]<<" ";
            cout<<a[i]<<endl;
        }
        else
        {
            int i;
            for(i=2;i<=n;i++)
            {
                if(!visit[i]&&isprime(i+a[count-1]))
                {
                    a[count]=i;
                    visit[i]=1;
                    dfs(count+1);
                    visit[i]=0;
                }
            }
        }
    }
    int main()
    {
        //freopen("a.txt","r",stdin);
        int ks=1;
        a[0]=1;
        while(cin>>n)
        {
            memset(visit,0,sizeof(visit));
            cout<<"Case "<<ks++<<":
    ";
            dfs(1);
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    二分图匹配【模板】
    高斯消元【模板】
    G. 小花梨的函数
    数字计数
    选课
    二叉苹果树
    重建道路
    【UVA10187】Headmaster's Headache(校长的烦恼)
    【51NOD1447】好记的字符串
    【51NOD1779】逆序对统计
  • 原文地址:https://www.cnblogs.com/wxx23-IOU/p/13583554.html
Copyright © 2011-2022 走看看