• acwing第77场周赛 前两题


    💥前言

            ☀️大家好☀️,我是烧蔬菜😁,最近做算法题可以感受到自己确实有点懈怠了😐,所以给自己定一个百日刷题计划,希望自己可以一直坚持下去💪,每天做题,也把题题解写下,记录自己每天的做题痕迹来激励提升自己获取正反馈✊,并且与大家分享下去😁

    😉解题报告

    💥进球

    biu~

    ☘️ 题目描述☘️

            两支足球队之间展开了一场足球赛。
            整场比赛双方一共打进了 n 粒进球进球多的一方将收获最终的胜利
            请你根据进球纪录,判断哪支球队最终获胜
            保证不存在平局

            输入格式
            第一行包含整数 n。
            接下来 n 行,其中第 i 行记录了打进第 i 粒进球的球队的名称
            球队名称由大写字母构成,长度范围 [1,10]。
            保证输入中包含的不同球队不超过两支

            输出格式
            输出最终获胜队伍的名称。

            数据范围
            前 5 个测试点满足 1≤n≤5。
            所有测试点满足 1≤n≤100。

    🤔一、题意及思路:

            (1)打进 n n n粒球,进球最多的一方获胜,保证不存在平局;
            (2)由于打进的球用球队名称来表示,需要用一个字符串数组进行存储进球的球队,由于并不知道球队的名称和长度,所以需要对球队的名称进行保存,目的是为了循环时进行相同的判断进行累加;

    😎二、源码:

    #include 
    using namespace std;
    string g[110];
    string n1, n2;
    
    int main() {
        int n;
        cin >> n;
        
        for (int i = 0; i < n; i++) {
            cin >> g[i];
        }
        
        int size1, size2 = 0;
        size1 = g[0].size();
        n1 = g[0];
        for (int i = 0; i < n; i++) {		//(1)
            if (g[i].size() != size1) {
                size2 = g[i].size();
                n2 = g[i];
                break;
            }
        }
        
        if (!size2) {			//(2)
            cout << g[0];
            return 0;
        }
        
        int ret1 = 0, ret2 = 0;
        for (int i = 0; i < n; i++) {		//(3)
            if (g[i].size() == size1) {
                ret1++;
            } else {
                ret2++;
            }
        }
        
        if (ret1 > ret2) {
            cout << n1;
        } else {
            cout << n2;
        }
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    😮三、代码分析:

            (1)对第二个队伍进行保存名称
            (2)如果没有第二个队伍,第一个队伍胜利
            (3)记录两个球队的球数

    💥biu~

    ☘️ 题目描述☘️

            n 个小朋友围成一圈,按顺时针顺序依次编号为 1∼n。
    有 7 种颜色的帽子,每种颜色的帽子的数量都足够多。
            7 种颜色不妨表示为 R、O、Y、G、B、I、V。、
            现在,要给每个小朋友都发一个帽子,要求:
                            每种颜色的帽子都至少有一个小朋友戴。
                            任意四个相邻小朋友的帽子颜色都各不相同。
            请你提供一种分发帽子的方案。

            输入格式
            共一行,包含一个整数 n。

            输出格式
    输出一行长度为 n 的由代表颜色的字符组成的字符串,其中的第 i 个字符表示第 i 个小朋友分到的帽子的颜色。

            如果方案不唯一,输出任意合理方案均可。
            数据范围
            所有测试点满足 7≤n≤100。

    🤔一、题意及思路:

            (1)输出一个符合要求的方案
            (2)这道题应该是一道贪心,直接顺时针排序给定值,若n取余7的余数为1,2,3这三种情况,则进行变化后输出,否则进行输出;

    😎二、源码:

    #include 
    using namespace std;
    char cmp[7] = { 'R','O','Y','G','B','I','V'};
    char kid[110];
    int n;
    
    int main() {
        cin >> n;
        
        for (int i = 0; i < n; i++) {
            kid[i] = cmp[i % 7];
        }
    
        if (n % 7 == 1) {
            kid[n -1] = 'G';
        } else if (n % 7 == 2){
            kid[n - 1] = 'B';
            kid[n - 2] = 'G';
        } else if (n % 7 == 3) {
            kid[n - 1] = 'I';
            kid[n - 2] = 'B';
            kid[n - 3] = 'G';
        } else {
            for (int i = 0; i < n; i++) {
                cout << kid[i];
            }
            return 0;
        }
        for (int i = 0; i < n; i++) {
            cout << kid[i];
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    😮三、代码分析:

            (1)无

  • 相关阅读:
    DataX实现Mysql与ElasticSearch(ES)数据同步
    C++:添加头文件时出错C3646和C4430
    开源项目分享:ChatGPT 控制台聊天应用
    Java类和对象基础
    20231008工作心得:sql
    2024/03/01
    Webpack关闭SourceMap
    10款远程办公软件,助你事半功倍,晋升快如闪电
    Java处理文件流传给前端接收
    Scala基础【入门及安装】
  • 原文地址:https://blog.csdn.net/m0_64141176/article/details/127825220