U208362 分为互质组
U208362 分为互质组
题目与P10483 小猫爬山相识 只需要将判断条件改为是否互质即可
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100];
vector<int>sum[100];
int n,w;
bool b[100];
int ans=INT_MAX;
int isrp(int a,int b){
if(b==0){
return a;
}
return isrp(b,a%b);
}
bool check(int num,int m){
bool flag=true;
for(int i=0;i<sum[num].size();i++){
if(isrp(sum[num][i],a[m])!=1){
flag=false;
}
}
return flag;
}
void dfs(int st,int num){
if (num>=ans)
return;
if(st>n){
ans=num;
return;
}
sum[num+1].push_back(a[st]);
dfs(st+1,num+1);
for(int i=1;i<=num;i++) {
if(check(i,st)){
vector<int>now;
now.clear();
for(int j=0;j<sum[i].size();j++){
now.push_back(sum[i][j]);
}
sum[i].push_back(a[st]);
dfs(st+1,num);
sum[i].clear();
for(int j=0;j<now.size();j++){
sum[i].push_back(now[j]);
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(1,0);
cout<<ans;
return 0;
}
本文作者:XichenOC
本文链接:https://www.cnblogs.com/XichenOC/p/18682328
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步