acwing第77场周赛 前两题

💥前言

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

😉解题报告

💥进球

biu~

☘️ 题目描述☘️

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

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

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

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

🤔一、题意及思路:

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

😎二、源码:

#include <iostream>
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)记录两个球队的球数

💥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 <iostream>
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)无

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值