#1和#4 WA 其他 AC 67分求救!
查看原帖
#1和#4 WA 其他 AC 67分求救!
1271070
Wh1spers0fTheW1nd楼主2024/5/3 10:56
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,a[25],b[25];
bool vis[25];
bool zs(int k)
{
  for(int i=2;i*i<=k;i++)
  {
  	if(k%i==0)	return 0;
  }
  return 1;
}
void dfs(int k,int sum)
{
  if(k>m)
  {
  	if(zs(sum))
  	{	
//			for(int i=1;i<=m;i++)
//				cout<<a[i]<<" "<<i<<" ";
//			cout<<endl;
  		ans++;
  	}
  	return ;
  }
  for(int i=1;i<=n;i++){
  	if(vis[i]==0&&b[i]>=a[k-1]){
  		a[k]+=b[i];
  		vis[i]=1;
  		
  		dfs(k+1,sum+a[k]);
  		
  		a[k]-=b[i];
  		vis[i]=0;
  	}
  }
}
int main()
{
  cin>>n>>m;
  for(int i=1;i<=n;i++)
  	cin>>b[i];
  dfs(1,0);
  cout<<ans;
  return 0;
}


2024/5/3 10:56
加载中...