zoukankan      html  css  js  c++  java
  • hdu 1016 Prime Ring Problem 深搜

    输入n。从1到n的数组成一个环,环相邻的两个数之和为质数。输出所有的这种环。
    本人用深搜递归水过
    250ms

    #include <stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include <iostream>
    using namespace std;
    int n;
    int ans[25],p[50],flag[25];
    void dfs(int step)
    {
        int i;
        if(step==n)
        {
            if(p[ans[0]+ans[step-1]])
            {
                printf("%d",ans[0]);
                for(i=1;i<n;i++)
                printf(" %d",ans[i]);
                printf("\n");
            }
            return;
        }
        for(i=1;i<=n;i++)
        {
            ans[step]=i;
            if(!flag[i]&&p[ans[step]+ans[step-1]])
            {
                flag[i]=1;
                dfs(step+1);
                flag[i]=0;
            }
        }
    }
    int main()
    {
        int i,j,cas=1;
        for(i=0;i<45;i++)
        p[i]=i;
        for(i=2;i<45;i++)
        if(p[i])
        for(j=i+1;j<45;j++)
        if(!(p[j]%p[i]))
        p[j]=0;
        while(scanf("%d",&n)!=EOF)
        {
                printf("Case %d:\n",cas++);
                if(n==1||n%2==0)
                {
                memset(flag,0,sizeof(flag));
                ans[0]=1;
                flag[1]=1;
                dfs(1);
            }
            printf("\n");
        }
        return 0;
    }
       

            
            
  • 相关阅读:
    Linux network driver
    Linux dd
    Linux aclocal
    Ubuntu
    Makefile
    控制导出符号
    Apache
    Linux nm命令
    Git Submodule
    Linux sed
  • 原文地址:https://www.cnblogs.com/zxj015/p/2740258.html
Copyright © 2011-2022 走看看