CometOJ_ 예순하나 기쁨 대회 타이틀 B : 보물 센터가 큰 대결을 꿈을 꿀 수!

CometOJ_ 예순하나 기쁨 대회 타이틀 B : 보물 센터가 큰 대결을 꿈을 꿀 수!

주제 링크

그림 삽입 설명 여기
그림 삽입 설명 여기

매우 간단 느낌을보고, 직접 폭력에 대한 생각을 시작 다음 다시 마크, 페어는 상대적으로 소수 발견 된 배열을 통과, 그러나 이것은 최대의 번호를 찾을 수 문제에 대한 공식 솔루션을 읽지 않는 것으로, 아직도 조금 뭔가가 있었다. . . .

공식 설명

본원에 사용 된 시간 복잡도 비교적 높게 열거 사용 재귀

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int used[20];
int a[20];
int t,n;
int ans;
int gcd(int x,int y){
    return y==0?x:gcd(y,x%y);
}
void dfs(int id){
    if(id==n){
        for(int i=0;i<n;i++){
            for(int j=0;j<i;j++){
                if(used[i]&&used[j]&&gcd(a[i],a[j])!=1){
                    return ;
                }
            }
        }
        int cnt=0;
        for(int i=0;i<n;i++){
            if(used[i]==1){
                 cnt++;
            }
        }
        if(cnt>ans){
               ans=cnt;
        }
        return ;
    }
    used[id]=1;
    dfs(id+1);
    used[id]=0;
    dfs(id+1);
}
int  main(){
    scanf("%d",&t);
    while(t--){
        memset(used,0,sizeof(used));
        memset(a,0,sizeof(a));
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        ans=0;
        dfs(0);
        printf("%d\n",ans);
    }
    return 0;
}
게시 된 127 개 원래 기사 · 원 찬양 32 ·은 10000 +를 볼

추천

출처blog.csdn.net/boliu147258/article/details/102157200