zoukankan      html  css  js  c++  java
  • hdu 1016 Prime Ring Problem (dfs)

    一切见凝视。


    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    bool vis[22];
    int n;
    int ans[22];
    int top;
    
    bool isprime(int x)//推断素数
    {
        for(int i=2;i<x;i++)
        if(x%i==0)return false;
        return true;
    }
    
    void dfs(int pos)
    {
        if(pos==n)//假设已经把环填满 也就是全部的数和前一个数的和是素数
        {//那么我们就推断最后一个数和第一个数的和是不是素数
            if(isprime(ans[n-1]+1))//假设是  输出方案
            {
                for(int i=0;i<n;i++)
                printf("%d%c",ans[i],i==n-1?

    ' ':' '); } return ;//假设不是 返回 } for(int i=1;i<=n;i++)//枚举这个位置放的数 { if(vis[i])continue;//假设这个数已经放过 if(!isprime(i+ans[pos-1]))continue;//假设你要尝试增加的这个数和上一个数的和不是素数 就不加进去 vis[i]=true;//假设以上条件都不符合 那么就能够增加到这个位置 标记为已经放入 ans[pos]=i;//放入方案中 dfs(pos+1);//递归下一次 去下一个位置尝试放数 vis[i]=false;//把这个数拿出来 尝试第二种方案 } } int main() { int CASE=1; while(scanf("%d",&n)!=EOF) { top=0; ans[0]=1;//把 1 放入第一个位置 vis[1]=true;//把 1 标记为已经放入环中 printf("Case %d: ",CASE++);//输出CASE dfs(1);//进入递归 puts("");//输出换行 } return 0; }



  • 相关阅读:
    Docker磁盘垃圾清理
    什么是容器编排?
    Docker 容器连接
    docker入门操作整理
    Docker学习的几个建议和技巧
    支付清结算之电商侧处理
    在Linux 中进入单用户模式的技巧
    教你如何构建异步服务器和客户端的 Kotlin 框架 Ktor
    NetSuite助力各行业企业快速发展
    linux需要你的不懈努力
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7374086.html
Copyright © 2011-2022 走看看