zoukankan      html  css  js  c++  java
  • 100726A

    迭代深搜,从最深的地方搜,然后一个数被搜过了,标记用过,以后不再访问

    #include<iostream>
    #include<cstring>
    #include<map>
    #include<algorithm>
    using namespace std;
    map<int,int>use;
    int used[10];
    int n,ans,T,tar;
    string s;
    int a[10];
    bool isprime(int x)
    {
    	if(x<2)return false;
    	for(int i=2;i*i<=x;i++)if(x%i==0)return false;
    	return true;
    }
    void dfs(int d,int num)
    {
    	if(d==tar+1)return;
    	if(use[num])return;
    	if(isprime(num)&&!use[num])
    	{ans++;/*cout<<"num="<<num<<endl*/;}	
    	use[num]=1;
    	for(int i=0;i<n;i++)
    		if(used[a[i]]>0)
    		{used[a[i]]--;dfs(d+1,num*10+a[i]);used[a[i]]++;}
    }
    int main()
    {
    	cin>>T;
    	while(T--)
    	{
    		cin>>s;
    		n=s.length();
    		memset(used,0,sizeof(used));
    		ans=0;
    		use.clear();
    		for(int i=0;i<s.length();i++)
    		{a[i]=s[i]-'0';used[s[i]-'0']++;}
    		for(int i=n;i>=1;i--)
    		{
    			tar=i;
    			dfs(0,0);
    			if(ans==0)break;
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    模块化
    ES6中的let
    ES6中的块级作用域
    Mobile 移动端
    H5离线缓存
    nginx 配置步骤
    虚拟路径的配置
    Apache和php的相关配置
    TCP/IP协议
    PHP中的文件操作
  • 原文地址:https://www.cnblogs.com/19992147orz/p/5998634.html
Copyright © 2011-2022 走看看