大佬帮忙看看,初学dfs的蒟蒻不知道哪里错了
查看原帖
大佬帮忙看看,初学dfs的蒟蒻不知道哪里错了
69089
陈情、无机楼主2021/7/19 21:23
#include<bits/stdc++.h>
#define q 10001
using namespace std;
int n,k,sum,ans,book[q],a[q];
int jc(int x){
	if(x==1){
		return 1;
	}
	return x*jc(x-1);
}
bool prime(int x){
	if(x==1){
		return 0;
	}
	if(x==2){
		return 1;
	}
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			return 0;
		}
	}
	return 1;
}
void dfs(int x){
	if(x>k){
		if(prime(sum)){
			ans++;
			sum=0;
		}
		return ;
	}
	for(int i=1;i<=n;i++){
		if(book[i]==0){
			sum+=a[i];
			book[i]=1;
			dfs(x+1);
			book[i]=0;
			sum-=a[i];
		}
	}
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	dfs(1);
	cout<<ans/jc(k);
	return 0;
}
2021/7/19 21:23
加载中...