zoukankan      html  css  js  c++  java
  • USACO 1.5-Superprime Rib

    /*
    ID: m1590291
    TASK: sprime
    LANG: C++
    */
    #include <iostream>
    #include <fstream>
    using namespace std;
    /******************************************************************************************************************
                        第一次感到 DFS 是如此的好用和方便
                        思路: (从数学的角度)
                        1.首位只能是质数2 3 5 7
                        2.其余位只能是1,3,7,9
                        3.若n=1,直接输出2,3,5 7
                        4. DFS 不需要预处理。 直接DFS 1~9,加入当前数末尾,并判断是不是素数,
                                是则递归处理下一位数,不是则回溯,直到depth>n。不会超时。
    
    ******************************************************************************************************************/
    ifstream fin("sprime.in");
    ofstream fout("sprime.out");
    
    int N;
    int fuc(int x)
    {
        for(int i = 2;i*i <= x;i ++)
            if(x%i == 0)    return 0;
        return 1;
    }
    void dfs(int x,int num)
    {
        if(!fuc(x)) return ;        //不是质数,进行回溯
        if(num == N)    fout<<x<<endl;      //边界条件,长度 num == N;
        else{
            for(int i = 1;i <=9;i +=2)
                dfs(x*10+i,num+1);
        }
    }
    int main()
    {
        while(fin>>N)
        {
            int a[4]={2,3,5,7};
            for(int i = 0;i < 4;i ++){
                dfs(a[i],1);
            }
        }
        return 0;
    }
    


  • 相关阅读:
    Set和Map
    将博客搬至CSDN
    (转)VS制作安装包
    C#俄罗斯方块实现思路及源码
    ASP.NET网站部署过程
    2016百度之星资格赛总结
    数据库编程常见错误总结
    (转)Android 如何全局获取Context
    Android数据文件存储
    关于工程文档中图表的使用
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6352028.html
Copyright © 2011-2022 走看看