素数环 dfs

原创 2012年03月24日 17:33:48
#include<iostream>
#include<cmath>
using namespace std;
//the prime ring
int visited[21];
int res[21];
int n;
int flag;
int isPrime(int p)
{
    if(p==1) return 0;
    else if(p==2||p==3) return 1;
    for(int i=2;i<=sqrt(p);i++)
     if(p%i==0)
      return 0;
    return 1;
}
void dfs(int k)
{
  if(k>n)
  {
    flag=1;
    for(int i=1;i<=k-1;i++)
     {
      if(i==1)
       cout<<res[i];
      else
       cout<<" "<<res[i];
     }
    cout<<endl;
  }
  for(int i=2;i<=n;i++)
  {
    if(!visited[i])
    {
      if(k==n)
       {
         if(isPrime(i+1)&&isPrime(res[k-1]+i))
          {
            visited[i]=1;
            res[k]=i;
            dfs(k+1);
            visited[i]=0;
          }
          // visited[i]=0;
       }
      else
      {
        if(isPrime(res[k-1]+i))
        {
          visited[i]=1;
          res[k]=i;
          dfs(k+1);
          visited[i]=0;
        }
        // visited[i]=0;
      }
    }
  }
}
int main()
{
    //int n;
    while(cin>>n)
    {
      flag=0;
      memset(visited,0,sizeof(visited));
      memset(res,0,sizeof(res));
      res[1]=1;
      dfs(2);
      if(!flag) cout<<"No answer"<<endl;
    }
    system("pause");
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

素数环(南阳oj488)(DFS+剪枝)

素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称...

hdu 1016Prime Ring Problem dfs经典题 素数环

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav...

nyoj素数环(dfs)

素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都...

nyoj488&&hdu1016 素数环(DFS)

素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都...

hdu-1016 Prime Ring Problem(素数环) DFS解法

Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...

Hdu 1016 Prime Ring Problem (素数环经典dfs)

Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...

NYOJ 488 素数环(DFS)

素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素...

NYOJ 488 素数环 (深搜DFS)

素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都...

HDOJ 1016 Prime Ring Problem ( 素数环 && DFS)

HDOJ 1016 Prime Ring Problem (素数环 && DFS) 思路: 通过 深搜 (DFS)实现全排列, 由于是从 1 开始, 所以将 1 作为单独的 一个,对后面...

NYOJ-488素数环(dfs)

素数环时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。为了简便起见,我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:素数环 dfs
举报原因:
原因补充:

(最多只允许输入30个字)