这个有错?
查看原帖
这个有错?
723198
AAA404楼主2022/7/11 20:12

dfs不是这么写的吗~~(当然也有可能是我太久没写忘了(WA了))~~

#include<bits/stdc++.h>
using namespace std;
int s,ans,b[21],size_ans,a[21],n,k;
bool isPrime(int k)
{
	for(int i=2;i<=n/2;i++)
	{
		if(k%i==0)return false;
	}
	return true;
}
void print()
{
	for(int i=1;i<=size_ans;i++)
	{
		if(b[i]==ans)return;
	}
	if(isPrime(ans))
	{
		s++;
		b[++size_ans]=ans;
	}
}
void dfs(int step,int j)
{
	if(step==k+1)
	{
		print();
		return;
	}
	for(int i=j;i<=n;i++)
	{
		ans+=a[i];
		dfs(step+1,i+1);
		ans-=a[i];
	}
}
int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	dfs(1,1);
	cout<<s;
	return 0;
}

变量名有点狂野,大佬帮忙看看哪错了

2022/7/11 20:12
加载中...