wc 67 求助
查看原帖
wc 67 求助
491427
hujunpei楼主2021/11/30 22:19

dfs

#include<bits/stdc++.h>
using namespace std;

int n,m,a[10000],ans,cnt;
int x[10000];
bool f[10000];

bool ss(int sb){
	if(sb<=1)return 0;
	for(int i=2;i<=sqrt(sb);i++){
		if(sb%i==0){
			return 0;
		}
	} 
	return 1;
} 

void dfs(int h){
	if(h>m){
		ans=0;
		for(int i=1;i<=m;i++){
			ans+=x[i];
		}
		if(ss(ans)){
			cnt++;
		}
	}
	else{
		for(int i=1;i<=n;i++){
			if(!f[i]&&a[i]>x[h-1]){
				x[h]=a[i];
				f[i]=1;
				dfs(h+1);
				f[i]=0;
			}
		} 
	}
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	dfs(1);
	cout<<cnt;
	return 0;
}
2021/11/30 22:19
加载中...