DFS之素数环

来源:互联网 发布:intelj java.util.map 编辑:程序博客网 时间:2024/04/30 10:22
#include <cstdio>#include <cmath>#include <cstring>#include <iostream>using namespace std ;int a[100] = {1} ;//int a[25] ;bool vst[100] ;int n ;bool isPrime(int m){    if(m<2)        return false ;    int i,k = sqrt(m) ;    for(i = 2;i<=k;i++)    {        if(m%i==0)            break ;    }    if(i>k)        return true ;    else return false ;}void dfs(int cur){    if(cur == n-1)    {        if(isPrime(a[n-1]+1))        {            printf("1") ;            for(int i = 1;i<n;i++)            {                printf(" %d",a[i]) ;            }            printf("\n") ;        }        return ;    }    for(int i = 2;i<=n;i++)    {        //a[cur] = i ;        if(!vst[i] && isPrime(a[cur]+i))        {            vst[i] = true ;            a[cur+1] = i ;            dfs(cur+1) ;            vst[i] = false ;        }    }}int main(){    while(scanf("%d",&n)!=EOF)    {        memset(vst,false,sizeof(a)) ;        dfs(0) ;    }}

0 0
原创粉丝点击