2 solutions

  • 0
    @ 2024-11-17 18:16:39
    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 15;
    
    vector<int> cards[N];
    int ver[N];
    map<char, int> s;
    
    void get() { // 对于当前的所有牌做映射
        for(int i = 2; i <= 9; i ++ ) {
            int c = '0' + i;
            s[c] = i;
        }
        s['A'] = 1, s['J'] = 11, s['Q'] = 12, s['K'] = 13, s['0'] = 10;
    }
    
    int main() {
        get();
        for(int i = 1; i <= 13; i ++ ) 
            for(int j = 0; j < 4; j ++ ) {
                char c[2];
                cin >> c;
                cards[i].push_back(s[c[0]]);
            }
        //模拟题目的操作置换牌
        for(int i = 0; i < 4; i ++ ) {
            int t = cards[13][i];
            while(t != 13) {
                int r = cards[t].back();
                cards[t].pop_back();
                ver[t] ++ ;
                t = r;
            }
        }
        int ans = 0;
      //如果当前牌是被开出四次,就累加进入答案
        for(int i = 1; i <= 13; i ++ ) ans += (ver[i] >= 4);
        cout << ans << endl;
        return 0;
    }
    

    Information

    ID
    527
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    (None)
    # Submissions
    13
    Accepted
    2
    Uploaded By