算法习题--蓝桥杯

python

cpp 复制代码
def read_log(filename):
    log = []
    with open(filename, 'r') as file:
        for line in file:
            correct_char, input_char, timestamp = line.split()
            log.append((correct_char, input_char, int(timestamp)))
    return log

def longest_combo(log):
    if len(log) <= 1:
        return len(log)

    max_combo = 1
    current_combo = 1

    for i in range(1, len(log)):
        if log[i][1] == log[i][0] and log[i][2] - log[i - 1][2] <= 1000:
            current_combo += 1
            if current_combo > max_combo:
                max_combo = current_combo
        else:
            current_combo = 1

    return max_combo

if __name__ == "__main__":
    filename = "log.txt"
    log = read_log(filename)
    result = longest_combo(log)
    print(result)

c

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

// 定义记录结构体
typedef struct {
    char correct_char;
    char input_char;
    long long timestamp;
} LogEntry;

// 读取日志文件
int read_log(const char *filename, LogEntry *log, int *n) {
    FILE *file = fopen(filename, "r");
    if (file == NULL) {
        return -1;
    }

    int count = 0;
    while (fscanf(file, "%c %c %lld\n", &log[count].correct_char, &log[count].input_char, &log[count].timestamp) == 3) {
        count++;
    }

    fclose(file);
    *n = count;
    return 0;
}

// 计算最长连击
int longest_combo(LogEntry *log, int n) {
    if (n <= 1) {
        return n;
    }

    int max_combo = 1;
    int current_combo = 1;

    for (int i = 1; i < n; i++) {
        if (log[i].input_char == log[i].correct_char && log[i].timestamp - log[i - 1].timestamp <= 1000) {
            current_combo++;
            if (current_combo > max_combo) {
                max_combo = current_combo;
            }
        } else {
            current_combo = 1;
        }
    }

    return max_combo;
}

int main() {
    const char *filename = "log.txt";
    LogEntry log[10000]; // 假设最多有10000条记录
    int n;

    if (read_log(filename, log, &n) != 0) {
        fprintf(stderr, "Error reading log file.\n");
        return 1;
    }

    int result = longest_combo(log, n);
    printf("%d\n", result);

    return 0;
}
相关推荐
go546315846522 分钟前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法
aramae32 分钟前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
大锦终43 分钟前
【算法】前缀和经典例题
算法·leetcode
想变成树袋熊1 小时前
【自用】NLP算法面经(6)
人工智能·算法·自然语言处理
cccc来财2 小时前
Java实现大根堆与小根堆详解
数据结构·算法·leetcode
Coovally AI模型快速验证2 小时前
数据集分享 | 智慧农业实战数据集精选
人工智能·算法·目标检测·机器学习·计算机视觉·目标跟踪·无人机
墨尘游子2 小时前
目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)
人工智能·python·算法
恣艺3 小时前
LeetCode 854:相似度为 K 的字符串
android·算法·leetcode
予早3 小时前
《代码随想录》刷题记录
算法
满分观察网友z3 小时前
别总想着排序!我在数据看板中悟出的O(N)求第三大数神技(414. 第三大的数)
算法