zoukankan      html  css  js  c++  java
  • HDU1016——Prime Ring Problem

    http://acm.hdu.edu.cn/showproblem.php?pid=1016

    这道题是经典的素数环问题,相邻的两个数之和是素数。

    解题方法:用的是深搜,以1为起点,搜索,下一个数为出去前面的数字的集合。(用vis数组记录访问过的节点)

    剪枝:当前搜索值与数组前一个值之和不为素数的时候返回。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include<math.h>
    using namespace std ;
    int n,m,flag;
    int a[1002],sum,vis[1002];
     void dfs(int k);
     int  panduan(int a);
    int main(){
        int count=0; 
        while(~scanf("%d",&n)){
            count++;
            memset(vis, 0, sizeof(vis));
            a[1]=1;
            printf("Case %d:
    ",count);
            dfs(2);    
            printf("
    ");
        }
        return 0;
    } 
    void dfs(int k){
        if(k==n+1){
                if(panduan(a[n]+1)){
                    for(int i=1;i<n;i++){
                    printf("%d ",a[i]);
                } 
                printf("%d
    ",a[n]);
                }
                
        }else{
            for(int i=2;i<=n;i++){
                if(!vis[i]){
                    vis[i]=1;
                    a[k]=i;
                    if(panduan(a[k]+a[k-1])==1) dfs(k+1);
                    vis[i]=0;
                }
            }
        }
    }
    int  panduan(int a){
        bool b=1;
        for(int i=2;i<=sqrt(a);i++){
            if(a%i==0){
                b=0;
                break;
            }
        }
        return b;
    }
  • 相关阅读:
    Lua 数组
    javascript debugger
    Lua 字符串
    警告
    Lua中获取table长度
    Lua 运算符
    Lua 函数
    lua if 流程控制
    pairs 和 ipairs 的区别
    Lua 循环
  • 原文地址:https://www.cnblogs.com/Yvettey-me/p/4523586.html
Copyright © 2011-2022 走看看