zoukankan      html  css  js  c++  java
  • POJ2034 Antiprime Sequences dfs

    筛出素数然后直接暴力即可。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #define MAXN 10000
    using namespace std;
    
    int N, M, d, p[600005];
    int hash[10005], path[10005];
    
    void pre()
    {
        int k;
        for (int i = 4; i <= MAXN; i += 2) {
            p[i] = 1;
        }    
        for (int i = 3; i <= 105; i += 2) {
            if (!p[i]) {
                k = 2 * i;     
                for (int j = i * i; j <= MAXN; j += k) {
                    p[j] = 1;
                }
            }
        }
    }
    
    bool dfs(int x, int step)
    {
        path[step] = x;
        if (step >= 2) { 
            int sum = path[step], k = step > d ? d : step;
            for (int i = step-1; i > step-k; --i) {
                sum += path[i];
                if (!p[sum]) {
                    return false;
                }
            }
            if (step == M-N+1) {
                for (int i = 1; i <= M-N+1; ++i) {
                    printf(i == 1 ? "%d" : ",%d", path[i]);
                }
                puts("");
                return true;
            }
        }
        for (int i = N; i <= M; ++i) {
            if (!hash[i]) {
                hash[i] = 1;
                if (dfs(i, step + 1)) {
                    return true;
                }
                hash[i] = 0;
            }
        }
        return false;
    }
    
    int main()
    {
        int flag;
        pre(); 
        while (scanf("%d %d %d", &N, &M, &d), N|M|d) {
            if (N > M) {
                int t = N; 
                N = M;
                M = t;
            }
            flag = 0;
            memset(hash, 0, sizeof (hash));
            for (int i = N; i <= M; ++i) {
                hash[i] = 1;
                if (dfs(i, 1)) {
                    flag = 1;
                    break;
                }
                hash[i] = 0;
            }
            if (!flag) {
                puts("No anti-prime sequence exists.");
            }
        }
        return 0;    
    }
  • 相关阅读:
    一个省一等奖没文件没证书,只能保存一张图呢
    HTML5的新结构标签
    一个最简单的网页是如何构成的
    数据模型层Model
    空控制器空操作
    TP框架
    thinkphp基础
    静态缓存
    smarty函数
    Smarty的使用
  • 原文地址:https://www.cnblogs.com/Lyush/p/2591023.html
Copyright © 2011-2022 走看看