💥前言
☀️大家好☀️,我是烧蔬菜😁,最近做算法题可以感受到自己确实有点懈怠了😐,所以给自己定一个百日刷题计划,希望自己可以一直坚持下去💪,每天做题,也把题题解写下,记录自己每天的做题痕迹来激励提升自己获取正反馈✊,并且与大家分享下去😁
😉解题报告
💥进球
☘️ 题目描述☘️
两支足球队之间展开了一场足球赛。
整场比赛双方一共打进了 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)无