zoukankan      html  css  js  c++  java
  • 题解 P1218 【[USACO1.5]特殊的质数肋骨 Superprime Rib】

    看到有人用八重循环做,还写了8个if语句

    其实没有那么麻烦,暴力又时也能体现出技术的美

    记得小学的信奥老师讲:这种n重循环是玩不动暴力

    我:我就玩暴力怎么了

    可以用递归控制循环次数,不必一一判断了

    而且递归可以剪枝

    其他思路和别人基本一样,但真的不是dfs qwq

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    long long n;
    inline bool isprime(long long x)//质数判断
    {
      if(x==1) return 0;
      for(int i=2; i*i<=x; i++)
        if(x%i==0) return 0;
      return 1;
    }
    inline void Make(int k,int now)//递归控制循环次数
    //看到那个inline了吗,非函数用不了这个qwq
    {
      if(k==0)//如果循环到了层数就退出
      {
        cout<<now<<endl;
        return;
      }
      for(int i=1; i<10; i++)//循环填上数字
        if(isprime(now*10+i))//如果符合条件就继续递归
          Make(k-1,now*10+i);
    }
    int main()
    {
      cin>>n;
      Make(n,0);
      return 0;
    }
    

    qwq就是这样辣(484比dfs短好多,还没有压行呢,而且应该不是正解)

    (这是压行的)

    #include <bits/stdc++.h>
    using namespace std;
    long long n;
    inline bool isprime(long long x){ if(x==1) return 0; for(int i=2; i*i<=x; i++) if(x%i==0) return 0; return 1; }
    inline void Make(int k,int now){ if(k==0) { cout<<now<<endl; return; } for(int i=1; i<10; i++) if(isprime(now*10+i)) Make(k-1,now*10+i); }
    int main() { cin>>n; Make(n,0); return 0; }
    

    各位886

  • 相关阅读:
    python做一个数独小游戏
    通过进程快照枚举进程的信息
    单向链表 malloc与free
    指针常量&指向常量的指针
    变量在不同区域的默认初始值
    数组指针和指针数组
    堆的首地址和堆的指针
    创建对象时,系统会自动调用构造函数和析构函数
    对象所占内存的大小与首地址
    范磊 C++ 第8章 指针
  • 原文地址:https://www.cnblogs.com/oierscw/p/12551570.html
Copyright © 2011-2022 走看看