1018 锤子剪刀布(C++)

题目链接:点击进入

 

这道题主要细节上得考虑到,难度没有,我用一个容器,vec[0]存储平手,vec[1/2/3]分别存储甲胜--1.出“B”赢 2.出“C”赢 3.出“J”赢, vec[4/5/6]分别存储乙赢--4.出“B”赢 5.出“C”赢 6.出“J”赢

第一次提交,测试点1,2,4错误,发现是输出赢得最多的手势,必须初始化为“B”,不然都平手,没有输出。

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int Func3(const string& str1, const string& str2) {
    if (str1 == "C" && str2 == "J")
        return 1;
    else if (str1 == "J" && str2 == "B")
        return 1;
    else if (str1 == "B" && str2 == "C")
        return 1;
    else
        return 0;
}

int Func2(const string& str, int flag) {
    if (str == "B")
        return (flag < 0 ? 4 : 1);
    else if (str == "C")
        return (flag < 0 ? 5 : 2);
    else
        return (flag < 0 ? 6 : 3);
}

int Func(const string& str1, const string& str2) {
    if (str1 == str2)
        return 0;
    if (Func3(str1, str2))
        return Func2(str1, 1);
    else
        return Func2(str2, -1);
}



int main()
{
    int n;
    string str1, str2;
    vector<int> results, vec(7, 0);
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> str1 >> str2;
        results.push_back(Func(str1, str2));
    }
    for (int j = 0; j < results.size(); ++j) {
        ++vec[results[j]];
    }
    int sum1 = vec[1] + vec[2] + vec[3], sum2 = vec[4] + vec[5] + vec[6], max1 = 0, max2 = 0, k = 1, f = 4;
    cout << sum1 << " " << vec[0] <<" " << n - vec[0] - sum1 << endl;
    cout << sum2 << " " << vec[0] << " " <<  n - vec[0] - sum2 << endl;
    for (int i = 1; i <= 3; ++i) {
        if (vec[i] > max1) {
            max1 = vec[i];
            k = i;
        }
    }
    for (int i = 4; i <= 6; ++i) {
        if (vec[i] > max2) {
            max2 = vec[i];
            f = i;
        }
    }
    if (k == 1)
        cout << "B" << " ";
    else if (k == 2)
        cout << "C" << " ";
    else if (k == 3)
        cout << "J" << " ";
    if (f == 4)
        cout << "B";
    else if (f == 5)
        cout << "C";
    else if (f == 6)
        cout << "J";

    return 0;
}

 

posted @ 2019-03-12 23:46  Hk_Mayfly  阅读(342)  评论(0)    收藏  举报