原题链接
题解:
#include "iostream"
#include "algorithm"
#define ll long long
using namespace std;
ll sum=0;
bool prime(ll x){
int n=2;
for(;x%n!=0;n++);
sum=0;
return n==x;
}
int main(){
int n,k,num[25]={0},flag[25]={0},count=0;
cin>>n>>k;
for(int i=k;i<n;i++)flag[i]=true;
for(int i=0;i<n;i++)cin>>num[i];
do{
for(int i=0;i<n;i++)if(flag[i]==false)sum+=num[i];
if(prime(sum))count++;
}while (next_permutation(flag,flag+n));
cout<<count;
}
本题依然可以使用 next_permutation 函数
与 P1157 相似做法 使用一个状态数组搭配该函数来进行求组合 具体流程请到p1157题解查看
所以在这里基本可以说 求基本的组合 使用该函数相比dfs更加方便快捷