zoukankan      html  css  js  c++  java
  • DFS(8)——poj2034Anti-prime Sequences

    一、题目回顾

    题目链接:Anti-prime Sequences

    Sample Input
    1 10 2
    1 10 3
    1 10 5
    40 60 7
    0 0 0
     
    Sample Output

    1,3,5,4,2,6,9,7,8,10

    1,3,5,4,6,2,10,8,7,9

    No anti-prime sequence exists.

    40,41,43,42,44,46,45,47,48,50,55,53,52,60,56,49,51,59,58,57,54

     

    题意:求n到m的一个排列,满足任意连续的k(2<=k<=d)个数的和都不为素数。

     

    二、解题思路

    • dfs+素数打表

     

    三、代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    const int maxn = 10001;
    int ans[1001];
    int n,m,d,flag;
    int prime[maxn];						
    bool vis[1001];
    
    void isPrime()
    {
    /*	memset(prime,1,sizeof(prime));  
        prime[1] = 0;  
        for (int i=2;i<=10000;i++)  
            if (prime[i]) 
    			for (int j=i+i;j<=10000;j+=i) 
    				prime[j] = 0;*/
    	for(int i=2;i<maxn;i++)
    		for(int j=2;i*j<maxn;j++)
    	    	prime[i*j]=1;
    }
    
    void dfs(int now)
    {
    	if(flag)	return;
    	if(now>m-n+1){
    		flag = 1;
    		return;
    	}
    	for(int i=n;i<=m;i++){
    		int biaoji = 0;
    		if(!vis[i]){
    			for(int j=2;j<=d&&now-j>=0;j++){
    				if(!prime[ans[now-1]+i-ans[now-j]])  
                		biaoji = 1;  
    			}
    			if(biaoji)	continue;
    			ans[now] = ans[now-1] + i;
    			vis[i] = 1;
    			dfs(now+1);
    			if(flag)	return;
    			vis[i] = 0;
    		}
    	}
    }
    
    int main()
    {
    	isPrime();
    	while(cin>>n>>m>>d && !(n==0&&m==0&&d==0)){
    		memset(vis,0,sizeof(vis));
    		flag = 0;
    		dfs(1);
    		if(flag==0)	printf("No anti-prime sequence exists.
    ");
    		else{
    			printf("%d",ans[1]);  
            	for(int i=2;i<=m-n+1;i++)  
            		printf(",%d",ans[i]-ans[i-1]);  
            	printf("
    ");  
    		}
    	}
    	return 0;
    } 
  • 相关阅读:
    重构后的ConditionHelper
    重构ConditionHelper
    用shell求两个文件的差集
    文件落盘的逻辑
    [转]undefined reference问题总结
    动态生成xml文件
    32位,64位的一些问题
    树数据结构的实际应用
    线程池中的栅栏
    关于线程池的理解
  • 原文地址:https://www.cnblogs.com/xzxl/p/7310265.html
Copyright © 2011-2022 走看看