【洛谷P1036 选数】

这个题显然用到了深搜的内容

让我们跟着代码找思路

#include<bits/stdc++.h>//万能头
int n,k,a[25],ans;
inline bool prime(int n)//最简单的判定素数的方法
{
    for(int i=2;i*i<=n;i++) 
    {
        if (n%i==0) 
            return 0;
    }
    return 1;
}
inline void dfs(int x,int p,int s)//DFS:无敌搜索轮
{
    if (p==k) //边界条件
    {
        ans+=prime(s);
        return ;
    }
    if(x>=n) //边界条件
        return ;
    dfs(x+1,p+1,s+a[x+1]);//若选择
    dfs(x+1,p,s);//若不选
}
int main()
{
    scanf("%d%d",&n,&k);//输入
    for(int i=1;i<=n;i++) 
        scanf("%d",a+i);//读入
    return dfs(0,0,0),printf("%d",ans),0;//大法师并输出qwq
}

 

posted @ 2019-05-31 21:21  卍GC卐  阅读(109)  评论(0编辑  收藏  举报