zoukankan      html  css  js  c++  java
  • PAT乙级1018

    题目链接

    https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344

    题解

    刚开始做很懵逼,可能并不难吧,但就是感觉做出来的话代码会很不优雅,所以想了半天。

    然后把这个题放了会儿,有了思路。现在第3个测试点没过,我又读了一遍代码,真的不是很懂哪里有错……

    // PAT BasicLevel 1018
    // https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344
    
    #include <iostream>
    using namespace std;
    
    void PK(char ,char);
    int aWin[3]={0,0,0};
    int bWin[3]={0,0,0};
    int equalCount=0;
    
    int main()
    {
        // 交锋回合数
        int n;
        cin >>n;
        
        // 获取交锋信息
        char a,b;
        for(int i=0;i<n;++i){
            cin >> a >> b;
            PK(a,b);
        }
    
        // 输出结果
        int aWinMaxCount=0,bWinMaxCount=0;//甲和乙三种出手方式的最大胜利次数
        int aWinMaxIndex=0,bWinMaxIndex=0;//甲和乙胜利最多的出手方式下标
        int aWinCount=0;
        for(int i=0;i<3;i++){
            // 更新甲的胜利次数
            aWinCount+=aWin[i];
    
            // 更新甲胜利最多的攻击方式
            if (aWin[i]>aWinMaxCount){
                aWinMaxCount=aWin[i];
                aWinMaxIndex=i;
            }
            // 更新乙胜利最多的攻击方式
            if (bWin[i] > bWinMaxCount){
                bWinMaxCount = aWin[i];
                bWinMaxIndex = i;
            }
        }
    
        // 输出结果
        char choice[]="BCJ";
        cout << aWinCount << ' '<< equalCount << ' ' << n - aWinCount - equalCount << endl;
        cout << n - aWinCount - equalCount << ' ' << equalCount << ' ' << aWinCount << endl;
        cout << choice[aWinMaxIndex] << ' ' << choice[bWinMaxIndex] << endl;
        
        //system("pause");
        return 0;
    }
    
    void PK(char a, char b)
    {
        if(a==b){
            equalCount++;
        }else{
            switch (a){
                case 'B':
                    if(b=='C')
                        aWin[0]++;
                    else
                        bWin[2]++;
                    break;
                case 'C':
                    if (b == 'B')
                        bWin[0]++;
                    else
                        aWin[1]++;
                    break;
    
                case 'J':
                    if (b == 'C')
                        bWin[1]++;
                    else
                        aWin[2]++;
                    break;
            }
        }
    }
    

    作者:@臭咸鱼

    转载请注明出处:https://www.cnblogs.com/chouxianyu/

    欢迎讨论和交流!


  • 相关阅读:
    [nginx&php]相关的Q&A
    [C++] 类中的虚函数
    [Linux] 从外网访问内网硬盘
    官网上下载Python安装包的选择
    计数排序的优化版
    插入排序
    Python一些坑
    Linux 一些冷门实用的命令
    分布式爬虫中的在ubuntu镜像里面安装redis的一些细节(-)
    vscode快捷键
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/11306113.html
Copyright © 2011-2022 走看看