哪儿错了?
查看原帖
哪儿错了?
372653
西方不buy菌楼主2020/11/20 20:45
#include<bits/stdc++.h>
using namespace std;
int vis[10001],a[10001],n,k,ans=0;
bool prime(int n)
{
	if(n<=1)
	{
		return 0;
	}
	if(n==2)
	{
		return 1;
	}
	for(int i=2;i*i<=n;i++)
	{
		if(n%i==0)
		{
			return 0;
		}
	}
	return 1;
}
void dfs(int dep,int sum,int z)//dep表示层数,z代表选了几个数 
{
	if(dep==n)
	return;
	if(z==k)
	{
		if(prime(sum))
		{
			ans++;
		}
		return;
	}
	dfs(dep+1,sum+a[dep],z+1);
	dfs(dep+1,sum,z);
}
int main()
{
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	dfs(0,0,0);
	cout<<ans<<"\n";
}

验证码eeer祭

2020/11/20 20:45
加载中...