题解 | #素数伴侣#

素数伴侣

https://www.nowcoder.com/practice/b9eae162e02f4f928eac37d7699b352e

#include <cmath>
#include <iostream>
#include <ratio>
#include <vector>
using namespace std;

bool isSu(int x){
    for(int i=2;i<=(int)sqrt(x);++i){
        if(x%i==0)
            return false;
    }
    return true;
}

int result=0;
vector<pair<int,int>> path;

void dfs(vector<int>& num,vector<int>& used,int cur){
    for(int i=0;i<num.size();++i){
        if(used[i]==0){
            used[i]=1;
            for(int j=0;j<num.size();++j){
                if(used[j]==0&&isSu(num[i]+num[j])){
                    used[j]=1;
                    path.push_back({num[i],num[j]});
                    int n=path.size();
                    result=max(result,n);
                    dfs(num,used,cur+2);
                    path.pop_back();
                    used[j]=0;
                }
            }
            used[i]=0;
        }
    }
}

int main() {
    int n;
    cin >> n;
    vector<int> num(n);
    for(int i=0;i<n;++i)
        cin >> num[i];
    vector<int> used(n,0);
    dfs(num,used,0);
    cout << result;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务