zoukankan      html  css  js  c++  java
  • hdu1016 Prime Ring Problem

    嘿嘿,终于还是AC了,DFS

    多开了几个数组,稍微加快了一点点,不然就超时了,原来,一点一点的剪枝,还是有那么一点点用滴,看代码吧

    #include<iostream>
    #include<queue>
    using namespace std;
    int prime[]={2,3,5,7,11,13,17,19,23,29,31,37};//相邻俩个数的和顶多就37,所以把其中的所有素数都直接打表了
    int a[20],b[20],n;
    bool hash1[40];
    void init()//哈希表
    {
    	memset(hash1,0,sizeof(hash1));
    	for(int i=0;i<12;i++)
    		hash1[prime[i]]=1;
    }
    void dfs(int t,int cnt)
    {
    	b[cnt]=t;//保存路径
    	if(cnt==n)
    	 {
    		 if(hash1[t+1])//判断是否为素数
    		 {
    			 for(int j=1;j<n;j++)
    				 cout<<b[j]<<' ';
    			cout<<t<<endl;
    		 }
    		 else return ;
    	}
    	int i=t%2==0?3:2;
    	for(;i<=n;i+=2)
    	{
    		
    		if(a[i]!=1&&hash1[t+i]==1)
    		{
    			a[i]=1;
    			dfs(i,cnt+1);
    			a[i]=0;
    		}
    	}
    	return ;
    
    }
    int main()
    {
    	int flag=0;
    	init();
    	while(cin>>n)
    	{
    		flag++;
    		cout<<"Case "<<flag<<":"<<endl;
    		memset(a,0,sizeof(a));
    		a[0]=1;
    		dfs(1,1);
    		cout<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    CrackMe17
    逆向按钮事件定位
    CrackMe20
    CrackMe14
    CrackMe09
    CrackMe08
    分布式事务seata
    SpringBoot自动注入原理初解与实现
    InnoDB事务日志(redo log 和 undo log)详解
    高频面试题:Spring 如何解决循环依赖?
  • 原文地址:https://www.cnblogs.com/nanke/p/2124426.html
Copyright © 2011-2022 走看看