1 条题解

  • 0
    @ 2024-8-24 18:23:32
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <unordered_map>
    #include <unordered_set>
    
    using namespace std;
    void dfs(vector<vector<char>>&graph,int cur,unordered_set<char> &set,int depth,int index,int &maxV){
        if(cur<0||cur>=graph.size())return;
        if(index<0||graph[cur].size()<=index)return;
      
        if(set.count(graph[cur][index])){//set已存在该项,说明已成环,退出DFS
            return;
        }
        set.emplace(graph[cur][index]);   
        maxV=max(depth+1,maxV);
        for(int i=index+1;i<graph[cur].size();i++){
            int num=graph[cur][i];
            for(int j=0;j<graph[num].size();j++){
                dfs(graph,num,set,depth+1,j,maxV);
            }
        }
    }
    int calRes(vector<pair<char,char>>&cards){
        int maxV=0;
        int n=cards.size();
        vector<vector<char>>graph;
        for(int i=0;i<n;i++){
            vector<char>tmp;
            for(int j=0;j<n;j++){
                if(i==j)continue;
                if((cards[i].first==cards[j].first)||(cards[i].second==cards[j].second)){
                    tmp.push_back(j);
                }
            }
            graph.push_back(tmp);
            //for(auto ii:tmp)cout<<(int)ii<<" ";
            //cout<<"EDN"<<endl;
        }//将牌和颜色的打出规则构建成图
        unordered_set<char> set;
        for(int i=0;i<n;i++){
            dfs(graph,i,set,1,0,maxV);
            set.clear();
        }//暴力DFS遍历
        return maxV;
    }
    
    
    int main(){
        vector<char>numV,colorV;
        vector<pair<char, char>>cards;
        char tmp;
        while(cin>>tmp){
            if(tmp>='1'&&tmp<='9'){
                numV.push_back(tmp);
            }else{
                colorV.push_back(tmp);
            }
        }   
        for(auto i=0;i<numV.size();i++){
            cards.push_back({numV[i],colorV[i]});
        }
        cout<<calRes(cards)<<endl; 
        return 0;
    }
    
    • 1

    信息

    ID
    87
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    76
    已通过
    33
    上传者