本蒟蒻在做题时脑子突然抽搐,要用一种不用for的dfs,可是却RE了,求各路大佬指点迷津 (悬赏2个关注)
源码如下:
#include <iostream>
#include <cmath>
using namespace std;
int n, a[30], k, ans = 0, cnt = 1;
bool t[30];
bool isprime(int num){
if (num == 0 || num == 1)
return false;
for (int i = 2; i <= sqrt(num); i++)
if (num % i == 0)
return false;
return true;
}
void dfs(int p, int sum){
if (n > p && cnt == k){
if (isprime(sum))
ans++;
return ;
}
cnt++;
dfs(p + 1, sum + a[p]);
cnt--;
dfs(p + 1, sum);
}
int main(){
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> a[i];
dfs(1, 0);
cout << ans;
return 0;
}