aaaDfs死活找不出错但16分的蒟蒻
查看原帖
aaaDfs死活找不出错但16分的蒟蒻
948951
yzsy25071621楼主2023/8/1 21:19

先贴代码

#include <iostream>
#include <cmath>

using namespace std;

int N[21];
bool isExist[21];

int cnt;
int sum;
int n;
int k;

bool isPrime(int);
void dfs(int);

int main ()
{
	cin>>n>>k;
	for(int i=1; i<=n; i++)
	{
		cin>>N[i];
	}
	dfs(1);
	cout<<cnt;
	return 0;
}

bool isPrime(int k)//参考CSDN中一篇帖子
{
	if(k<=1)
	{
		return false;
	}
	if(k==2 || k==3)
	{
		return true;
	}
	if(k%6!=1 || k%6!=5 )
	{
		return false;
	}
	for(int i=5; i<=sqrt(k) ;i+=6)
	{
		if((k%i==0) || (k%(i+2)==0))
		{
			return false;
		}
	}
	return true;
}

void dfs(int step)//Dfs,不知道错哪
{
	for(int i=1; i<=n; i++)
	{
		if(!isExist[i])
		{
			sum+=N[i];
			isExist[i]=true;
			if(step==k)
			{
				if(isPrime(sum))
				{
					cnt++;
				}
			}
			else
			{
				dfs(step+1);
			}
			sum-=N[i];
			isExist[i]=false;
		}
	}
	return;
}

死活16分。。。

2023/8/1 21:19
加载中...