zoukankan      html  css  js  c++  java
  • 素数环

    试题描述
        输入正整数n,用整数1,2,3,……,n 的某种排列组成一个环,使任意相邻的两数和均为素数。你的任务是输出有多少种排列方案。
    输入
    一个正整数n。
    输出
    一个数,代表有多少种方案。
    输入示例
    6
    输出示例
    2
    其他说明
    n〈=16

    用搜索。

     1 #include <iostream>
     2 
     3 using namespace std;
     4 int A[21],vis[21],n,t;  //A数组储存的是符合的素数环,vis判断当前数字是否访问过(visit) 
     5 
     6 bool is_prime(int n)   //判断素数标准模板
     7 {
     8     for(int i=2;i*i<=n;i++) if(n%i==0) return false;
     9     return true;
    10 }
    11 
    12 void js(int x)
    13 {
    14     if(x==n && is_prime(A[0]+A[n-1])) t++;
    15     for(int i=2;i<=n;i++)  //从2开始一个个判断 
    16     {
    17         if(vis[i]==0 && is_prime(i+A[x-1])) //如果没有被用过且与其相邻数的和是素数 
    18         {
    19             A[x]=i;
    20             vis[i]=1;
    21             js(x+1);  //开始找下一个方案 
    22             vis[i]=0;  //在下一个方案中,这个位置并没有访问过,所以一定要标记回0 
    23         }
    24     }
    25 }
    26 
    27 int main()
    28 {
    29     scanf("%d",&n);
    30     A[0]=1;
    31     vis[1]=1;
    32     js(1);
    33     printf("%d",t);
    34     //system("pause");
    35     return 0;
    36 } 
    素数环
  • 相关阅读:
    收听网络状态广播
    常用工具类
    BroadcastReceiver study
    NIO2
    ip route,ip rule, iptables和docker的端口映射
    Hystrix使用小结
    mysql CPU占用高
    mysql隔离级别与锁,接口并发响应速度的关系(2)
    TOMCAT调优内容
    jvm 锁Lock
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/5680038.html
Copyright © 2011-2022 走看看