一道简单的选择结构题。我们根据题目的要求和克制关系写判断条件即可。

这道题的难点是题目中给的拿几个情况的判断。好像我们必须把所有的情况都写出来一样。

但实际上不需要。

我们选择a或者b来进行处理即可。比如,我们选择a,那么我们就把a当前的所有可能列举出来,然后根据当前a的情况,写上只有b得分的情况、只有a得分的情况,二者都得分的情况即可。

这样可以减少很多判断条件的书写。

#include <iostream>

using namespace std;

int main() {
    
    int n;
    cin >> n;
    
    string s1, s2;
    int a = 0, b = 0;
    while(n--) {
        cin >> s1 >> s2;
        
        if(s1 == s2) {
            a += 1;
            b += 1;
            continue;
        }
        
        if(s1 == "Jin") {
            if(s2 == "Huo") {
                b += 3;
            } else if(s2 == "Mu") {
                a += 3;
            } else {
                a += 1;
                b += 1;
            }
        } else if(s1 == "Mu") {
            if(s2 == "Jin") {
                b += 3;
            } else if(s2 == "Tu") {
                a += 3;
            } else {
                a += 1;
                b += 1;
            }
        } else if(s1 == "Shui") {
            if(s2 == "Tu") {
                b += 3;
            } else if(s2 == "Huo") {
                a += 3;
            } else {
                a += 1;
                b += 1;
            }
        } else if(s1 == "Huo") {
            if(s2 == "Shui") {
                b += 3;
            } else if(s2 == "Jin") {
                a += 3;
            } else {
                a += 1;
                b += 1;
            }
        } else {
           if(s2 == "Mu") {
                b += 3;
            } else if(s2 == "Shui") {
                a += 3;
            } else {
                a += 1;
                b += 1;
            } 
        }
        
    }
    
    if(a == b) {
        cout << "Draw";
    } else {
        if(a > b) {
           cout << "Alice"; 
        } else {
            cout << "Bob";
        }
    }
    
    return 0;
}