P1036 选数

Posted Herminone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1036 选数相关的知识,希望对你有一定的参考价值。

很水的dfs...不想说什么了

Codes:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 
 6 using namespace std;
 7 const int N = 20 + 5;
 8 int a[N],n,k;
 9 int ans;
10 bool vis[N];
11 bool check(int x){//判断素数 
12     if(x == 1 || x == 0) return false; //特判 
13     if(x == 2) return true;
14     for(int i = 2;i * i <= x;++ i){
15         if(x % i == 0) return false;
16     }
17     return true;
18 }
19 void dfs(int i,int j,int sum){//dfs
20     if(j > k) return;
21     if(j == k && check(sum)){
22         ans ++;
23         return;
24     }
25     else if(i <= n){
26         dfs(i + 1,j + 1,sum + a[i]);
27         dfs(i + 1,j,sum);
28     } 
29     return;
30 }
31 int main(){
32     scanf("%d%d",&n,&k);
33     for(int i = 1;i <= n;++ i){
34         scanf("%d",&a[i]);
35     }
36     dfs(1,0,0);
37     cout << ans << \n;
38     return 0;
39 }

 

以上是关于P1036 选数的主要内容,如果未能解决你的问题,请参考以下文章

洛谷—— P1036 选数 || Vijos——选数

P1036 选数

P1036 选数

洛谷 P1036 选数

P1036 选数

P1036 选数