我这道题的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[20],ans=99999,product[20];
int Gcd(int x,int y)
{
if(y==0) return x;
return Gcd(y,x%y);
}
void dfs(int k,int step)
{
if(step==n+1)
{
if(k<ans) ans=k;
return;
}
for(int i=1;i<=k;++i)
{
if(Gcd(product[i],a[step])==1)
{
product[i]*=a[step];
dfs(k,step+1);
product[i]/=a[step];
}
}
product[k+1]*=a[step];
dfs(k+1,step+1);
product[k+1]/=a[step];
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) cin>>a[i],product[i]=1;
dfs(1,1);
printf("%d\n",ans);
return 0;
}
80求助。
几乎和网上的题解一模一样啊,验证码2899,全数字