poj 2034 Anti-prime Sequences(dfs),pojanti-prime

來源:互聯網
上載者:User

poj 2034 Anti-prime Sequences(dfs),pojanti-prime

http://poj.org/problem?id=2034


大致題意:給出區間[n,m],對這個區間的數進行排列使得相鄰的2個、3個......d個數之和都不是素數。輸出字典序最小的。


思路:裸的dfs。TLE了無數次是因為素數打表的範圍太小,最大應打到10000。


#include <stdio.h>#include <iostream>#include <map>#include <stack>#include <vector>#include <math.h>#include <string.h>#include <queue>#include <string>#include <stdlib.h>#include <algorithm>#define LL long long#define _LL __int64#define eps 1e-8#define PI acos(-1.0)using namespace std;const int maxn = 10010;bool prime[maxn];int vis[1010],ans[1010];int n,m,d;int ok;void init(){    memset(prime,true,sizeof(prime));    prime[0] = prime[1] = false;    for(int i = 2; i <= 10000; i++)    {        if(prime[i] == true)        {            for(int j = i*i; j <= 10000; j += i)                prime[j] = false;        }    }}void dfs(int dep){if(ok == 1)return;if(dep == m-n+2){ok = 1;for(int i = 1; i < dep-1; i++)printf("%d,",ans[i]);printf("%d\n",ans[dep-1]);return;}for(int i = n; i <= m; i++){if(!vis[i]){bool flag = 0;for(int k = 2; k <= d && dep-k>=0; k++){int sum = 0;for(int j = dep-k+1; j <= dep-1; j++)sum += ans[j];if(prime[sum + i] == true)flag = 1;}if(flag == 1)continue;ans[dep] = i;vis[i] = 1;dfs(dep+1);vis[i] = 0;}}}int main(){    init();    while(~scanf("%d %d %d",&n,&m,&d))    {        if(n == 0 && m == 0 && d == 0) break;        memset(vis,0,sizeof(vis));        ok = 0;        dfs(1);        if(ok == 0)printf("No anti-prime sequence exists.\n");    }    return 0;}





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.