zoukankan      html  css  js  c++  java
  • POJ 2034 Antiprime Sequences (筛素数+DFS)

    题目链接http://poj.org/problem?id=2034 题目大意:输入m, n, d,求出m,m+1,m+2,````m+n的一个排列。使得任意的连续k个数之和都为合数,2<=k<=d。 思路:暴力DFS,依次枚举第一个数,第二个数····,第n-m+1个数即可.但是本人并不是很清楚为什么DFS不会超时……粗略看了一下觉得可能是当m-n远大于d时一定有解,所以不会出现无解遍历完的情况……  
    #include 
    #include 
    #include 
    using namespace std;
    int n, m, d;
    int a[1100];
    int sum[11];
    int noprime[11100];
    int vis[1110];
    bool okflag;
    void Prime(int n){
        for (int i = 2; i * i <= n; i ++){
            if (!noprime[i]){
                int p = i + i;
                while(p <= n){
                    noprime[p] = 1;
                    p += i;
                }
            }
        }
    }
    void dfs(int p){
        if (okflag == 1)
            return ;
        if (p > m - n + 1){
            for (int i = 1; i < p - 1; i ++){
                cout << a[i] << ",";
            }
            cout << a[p-1] <> n >> m >> d){
            if (n + m + d == 0){
                return 0;
            }
            memset(vis, 0, sizeof(vis));
            okflag = 0;
            dfs(1);
            if (okflag == 0){
                cout << "No anti-prime sequence exists." << endl;
            }
        }
        return 0;
    }
    
     
    举杯独醉,饮罢飞雪,茫然又一年岁。 ------AbandonZHANG
  • 相关阅读:
    QT下载速度慢的解决方法
    第七章 多态
    第六章 重复运用class
    第五章 隐藏实现细节
    代码改变世界
    第四章 初始化和清理
    第三章 控制程序流程
    module.exports和exports
    如何与外部源交互
    实现POST服务器
  • 原文地址:https://www.cnblogs.com/AbandonZHANG/p/4114196.html
Copyright © 2011-2022 走看看