先说一句不用markdown的后果就是发出来一坨大佬不想看的东西。。。
不过真巧我是蒟蒻
以下是经过修改的你的代码,看注释
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[21],n,k,j;
bool isprime(int n)
{
//少一句
if(n==1) return false;
//判断是否质数
int s=sqrt(double(n));
for(int i=2;i<=s;i++)
{
if(n%i==0) return false;
}
return true;
}
int dfs(int step,int sum,int now)
{
if(step==k) return isprime(sum);
int sum1=0;
for(int i=now;i</*k 错误*/n;i++)
{
sum1+=dfs(step+1,sum+a[i],i+1);
//return sum1; 错位置
}
//在这里
return sum1;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i];
cout<<dfs(0,0,0)<<endl;
return 0;
}
```
by smarthehe @ 2018-11-15 23:43:04
嗯....骚年,不是我伤你的心,你的dfs真的写的太烂啦,一塌糊涂!
int dfs(int step,int sum,int now)
{
if(step==k) return isprime(sum);
int sum1=0;
for(int i=now;i<n;i++)
{
sum1+=dfs(step+1,sum+a[i],i+1);
}
return sum1;
}
by うちはサスケ @ 2018-11-16 21:41:15
希望更丰富的展现?使用Markdown
by BigEscape @ 2018-11-17 17:01:53