哪里错了?搜索有什么问题?
查看原帖
哪里错了?搜索有什么问题?
393833
linyicheng2楼主2020/11/26 13:40
#include<bits/stdc++.h>
using namespace std;
int a[21],f[21],n,m,ans,now;
int prime(int k)
{
	if(k==1)
	return 0;
	if(k==2)
	return 1;
	for(int i=2;i<=sqrt(k);i++)
	{
		if(k%i==0)
		{
			return 0;
		}
	}
	return 1;
}
void search(int k)
{
	if(f[k]==0&&k<=m)
	{
	f[k]=1;
	now+=a[k];
	search(k+1);
	if(k==m)
	{
		ans+=prime(now);
		return; 
	}
	now-=a[k];
	f[k]=0;
	}
	//else
	search(k+1);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	search(1);
	cout<<ans;	
 } ```
2020/11/26 13:40
加载中...