dfs,33分,求助大佬
查看原帖
dfs,33分,求助大佬
702822
Colas_miao_楼主2022/8/25 21:46
#include<bits/stdc++.h>
using namespace std;
int p[101],n,l,a[101],ans=0;
int f[1001],mi=0;
int check_aaa(int aaaa)
{
	for(int i=1;i<=mi;i++)
	{
		if(aaaa==f[i]) return 0;
	}
	return 1;
}
int check(int b)
{
	if(b<=1) return 0;
	for(int i=2;i<b;i++) if(b%i==0) return 0;
	return 1;
}
void dfs(int s,int k)
{
	if(k==l+1)
	{
		if(check_aaa(s)==0) return;
		f[++mi]=s;
		if(check(s)==1) ans++;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(p[i]==1) continue;
		p[i]=1;
		dfs(s+a[i],k+1);
		p[i]=0;
	}
}
int main()
{
	cin>>n>>l;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	dfs(0,1);
	cout<<ans;
	return 0;
}

代码贴上

2022/8/25 21:46
加载中...