码迷,mamicode.com
首页 > 其他好文 > 详细

深搜--P1036选数

时间:2020-02-03 22:36:20      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:turn   for   prim   定义   span   接下来   s函数   递归   class   

深搜中绝对会用到递归

因此本题也可以使用深搜来做

bool prime(int b) {
    memset(sz, true, sizeof(sz));
   sz[1]=false;
    for (int i=2;i<=b;i++) {
        if (sz[i]) {
            for (int j=2*i;j<=b;j+=i)
                sz[j]=false; 

 

定义一个dfs函数来解决对数的搜索

step代表执行步数

sum代表已经选好的数据的和

cet代表已经选完的数的个数

接下来进行搜索

另外介绍下非朴素版的寻找质数的方法

被人称作爱氏筛法

但是呢,我在本题中并未使用

深搜程序:

#include<cstdio>
#include<cmath>
#include<cstdio>
using namespace std;
int a[10001];
int n,k,tot,sum;
inline bool prime(int);
inline void dfs(int,int ,int);
inline void print()
    {
        printf("%d",tot);
    }
int main()
{
    scanf("%d%d",&n,&k);
    for(register int i=1;i<=n;i++)
       scanf("%d",&a[i]);
    dfs(1,0,0);
    print();
    return 0;
}
bool prime(int l)
{

    for(int i=2;i<=sqrt(l);i++)
    {
        if(l%i==0) return false;

    }
    return  true;


    

}
void dfs(int step,int sum,int cet)
{
    if(step==n+1||cet==k)
    {
        if(prime(sum)&&cet==k)
          tot++;
        return;
    }
    dfs(step+1,sum+a[step],cet+1);
    dfs(step+1,sum,cet);
    return;
}

爱氏筛法

 

深搜--P1036选数

标签:turn   for   prim   定义   span   接下来   s函数   递归   class   

原文地址:https://www.cnblogs.com/-Iris-/p/12257529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!