码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1016 DFS

时间:2016-03-26 06:35:57      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

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

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

#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("\n");
            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:\n",tt);
    memset(vis,true,sizeof(vis));
    dfs(0,1);
    printf("\n");
}
}

  

HDU 1016 DFS

标签:

原文地址:http://www.cnblogs.com/rayrayrainrain/p/5321714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!