错误的枚举方法,蒟蒻求助
查看原帖
错误的枚举方法,蒟蒻求助
577683
Neil_Seniorious楼主2022/8/8 16:20
#include<stdio.h>
int a[22],b[22];
bool p[22];
int n,m,ans;
int check(int p){
	if(p<2) return 0;
	for(int i=2;i*i<=p;i++){
		if(p%i==0) return 0;
	}
	return 1;
}
void dfs(int x){
	if(x>m){
		int s=0;
		for(int i=1;i<=m;i++){
//			printf("%d ",a[i]);
			s+=a[i];
		}
//		putchar(10);
		ans+=check(s);
		return;
	}
	for(int i=x;i<=n;i++){
		if(p[i]==false){
			b[x]=a[i];
			p[i]=true;
			dfs(x+1);
			p[i]=false;
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	dfs(1);
	printf("%d",ans);
	return 0;
}
2022/8/8 16:20
加载中...