【华为OD】2024年C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
【华为OD】2024年C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript-CSDN博客
C++、Java、python、JS代码:
【华为OD】C卷真题 100分:找出通过车辆最多颜色 C/C++代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:找出通过车辆最多颜色 Java代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:找出通过车辆最多颜色 python代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:找出通过车辆最多颜色 JavaScript代码实现[思路+代码]-CSDN博客
题目描述:
在一个狭小的路口,每秒只能通过一辆车,假如车辆的颜色只有3种,找出N秒内经过的最多颜色的车辆数量
三种颜色编号为0,1,2
输入描述
第一行输入的是通过的车辆颜色信息
[0,1,1,2] 代表4秒钟通过的车辆颜色分别是0,1,1,2
第二行输入的是统计时间窗,整型,单位为秒
输出描述
输出指定时间窗内经过的最多颜色的车辆数量
示例1
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
0 1 2 1 3
输出
2
说明
在[1,2,1]这个3秒时间窗内,1这个颜色出现2次,数量最多
示例2
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
0 1 2 1 2
输出
1
说明
在2秒时间窗内,每个颜色最多出现1次
879
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + + + | +
| + | + | + +----+ | | + + + | +
| + 3 | + | + + + 2 | | 2 + + + | +
| + | + | + + + | | + + + | +
| +---+ + | | | + ----+ | +---+ | | + | +
| | + | | | + | | | | | | + | +
| 1 | + | 8 | | + 1 | | | 1 | | 1 | | + | +
| | + | | | + | | | | | | | + | +
| +---+ + +---+ | ++---+ ++ +---+ +---+ | + | +
| | + | | | ++ | | |+ | +
|0 | + | 0 | 0 | ++ | 0 | |+ | +
| | + | | | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
题目解析:
按题目逻辑来处理即可
代码实现:
#include <stdio.h>
int main()
{
int cnt = 0;
int lens = 0;
int mv = 0;
int cv[100001] = { 0 };
char strs[100001] = { 0 };
int cl[3] = { 0 };
gets(strs);
char *str = strtok(strs, " ");
while (str != NULL) {
cv[cnt++] = atoi(str);
cl[cv[cnt - 1]]++;
str = strtok(NULL, " ");
}
gets(strs);
lens = atoi(strs);
if (lens >= cnt) {
for (int i = 0; i < 3; i++) {
if (cl[i] > mv)mv = cl[i];
}
}
for (int i = 0; i < cnt; ++i) {
int tmp[3] = { 0 };
for (int j = i; j < i + lens && i + lens <= cnt; ++j) {
++tmp[cv[j]];
if (tmp[cv[j]] > mv) {
mv = tmp[cv[j]];
}
}
}
printf("%d\n", mv);
return 0;
}