【2024蓝桥杯/C++/B组/前缀总分】

news2025/1/10 10:43:48

题目

代码

#include<bits/stdc++.h>
using namespace std;

// 定义常量N为210,用于数组的大小
const int N = 210;
// 声明n为整型变量,用于存储字符串的数量
int n;
// 声明一个字符串数组str,大小为N,用于存储字符串
string str[N];
// 声明一个二维整型数组matrix,大小为N*N,用于存储每对字符串间的相似度
int matrix[N][N];
// 声明score为整型变量,用于记录所有字符串之间的相似度总和
int score;

// 函数cal用于计算两个字符串s1和s2的相同前缀长度
int cal(string s1, string s2)
{
    // 定义sum用于存储相同前缀的长度
    int sum = 0;

    // i用于遍历两个字符串中的字符
    int i = 0;
    // 当两个字符串都没有遍历到末尾时循环
    while(s1[i] != '\0' && s2[i] != '\0')
    {
        // 如果当前字符相同,则sum加1,i加1
        if(s1[i] == s2[i]) sum++, i++;
        // 如果不同则跳出循环
        else break;
    }

    // 返回sum
    return sum;
}
// 函数cal_all用于计算所有字符串之间的相似度总和
int cal_all()
{
    // 初始化sum为0
    int sum = 0;
    // 遍历每一个字符串
    for(int i = 1; i <= n; i++)
    {
        // 再次遍历每一个字符串,从i+1开始,避免重复计算
        for(int j = i+1; j <= n; j++)
        {
            // 计算字符串i与字符串j之间的相似度,并存入matrix[i][j]
            matrix[i][j] = cal(str[i], str[j]);
            // 更新字符串i的整体相似度
            matrix[i][0] += matrix[i][j];
            // 累加到sum中
            sum += matrix[i][j];
        }
    }

    // 返回所有字符串之间的相似度总和
    return sum;
}
// 函数cal_part用于计算将某个字符串替换后,所有字符串之间的相似度总和
int cal_part(int i)
{
    // 初始化sum为0
    int sum = 0;
    // 遍历每一个字符串
    for(int j = 1; j <= n; j++)
    {
        // 跳过自身
        if(i == j) continue;
        // 累加字符串i与其他字符串的相似度
        sum += cal(str[i], str[j]);
        // 加上其他字符串的整体相似度
        sum += matrix[j][0];
        if(j < i) sum -= matrix[j][i];
    }

    // 返回新的相似度总和
    return sum;
}
// 主函数
int main()
{
    // 输入n的值
    cin >> n;
    // 输入n个字符串并存入数组str
    for(int i = 1; i <= n; i++) cin >> str[i];

    // 计算所有字符串之间的相似度总和
    score = cal_all();

    // 对每一个字符串进行替换操作
    for(int i = 1; i <= n; i++)
    {
        // 遍历字符串i中的每个字符
        for(char& c : str[i])
        {
            // 尝试用'a'到'z'的每个字符替换当前字符
            for(char ch = 'a'; ch <= 'z'; ch++)
            {
                int backup = c;
                // 替换当前字符
                c = ch;
                // 计算替换后的相似度总和
                int tmp = cal_part(i);
                // 更新最大相似度总和
                score = max(score, tmp);
                c = backup;
            }
        }
    }

    // 输出最大相似度总和
    cout << score;

    // 主函数返回0,表示程序正常结束
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pda条码扫描手持机,数据采集器助力景区售检票

随着科技的发展&#xff0c;景区也在往信息化方向发展&#xff0c;景区为了提升售票、检票入园效率&#xff0c;可采用pda条码扫描手持机售检票系统。pda条码扫描手持机是一种便携式的检票设备&#xff0c;可以随时随地使用。配备5.5寸高清大屏,1440*720分辩率&#xff0c;多点…

安防监控视频融合汇聚平台EasyCVR创建新用户时没有摄像机权限,是什么原因?

国标GB28181/RTSP/ONVIF视频管理系统EasyCVR视频汇聚平台&#xff0c;是一个具备高度集成化、智能化的多协议接入视频监控汇聚管理平台&#xff0c;拥有远程视频监控、录像、云存储、录像检索与回放、语音对讲、云台控制、告警、平台级联等多项核心功能。EasyCVR安防监控视频系…

docker笔记5-数据卷

docker笔记5-数据卷 一、数据卷1.1 定义1.2 本质1.3 特点 二、使用数据卷三、案例2.1 安装Mysql 四、匿名挂载和具名挂载4.1 匿名挂载4.2 具名挂载 五、三种挂载方式 一、数据卷 1.1 定义 Docker 容器数据卷是一个可用于存储数据的特殊目录&#xff0c;存在于一个或多个容器的…

免费【2024】springboot 出租车管理网站的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

unity2D游戏开发15自我防御

创建子弹 Ammo类来表示自子弹 创建一个GameObject,并命名为AmmoObject 将Ammo.png拖入Object中 属性设置,点击apply 将SpriteRenderer组件添加到AmmoObject,将Sorting Layer设置为Characters,并将Sprite属性设置为Ammo 将CircleCollider2D添加到AmmoObject。确保选中Is Tr…

【C++高阶】哈希的应用(封装unordered_map和unordered_set)

✨ 世事漫随流水&#xff0c;算来一生浮梦 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&…

KubeSphere部署:(三)MySQL安装

MySQL没有什么特殊的&#xff0c;这里记录一下部署过程(本文示例中安装的版本为5.7.29)。步骤大致如下&#xff1a; 拉取docker镜像 -> 标记并推送至私有harbor -> 创建有状态负载 -> 创建服务 一、拉取镜像&#xff0c;并推送至私有harbor # 拉取镜像 docker pull …

PP氮气柜的特点和使用事项介绍

PP材质&#xff0c;全称为聚丙烯&#xff0c;是一种热塑性塑料&#xff0c;具有质轻、强度高、耐化学腐蚀性好、无毒无味、耐热性佳等优点。它在众多塑料材料中脱颖而出&#xff0c;特别是在需要耐腐蚀和长期使用的应用中&#xff0c;表现尤为出色。 PP材质具有优秀的化学稳定性…

Loadrunner12 回放脚本查看接口响应数据

1、如下图所示&#xff0c;回放脚本后&#xff0c;点击快照-http数据-点击需要查看的接口-点击Json视图&#xff0c;最后点击响应正文&#xff0c;即可查看接口的响应数据

生信初学者教程(癌症转录组学):手把手教你如何发生信文章

网址 生信初学者教程&#xff08;癌症转录组学&#xff09; : https://bioinformatic-learner.github.io/BCT-page/ 提供了预览版本。 该教程包含从开题、数据下载、数据分析、结果解读、串联结果和撰写文章等等&#xff0c;是一份非常好的生信初学者发文章的好材料。 出发点…

【Linux】UDP 协议

目录 1. UDP 协议2. UDP 协议的特点:3. UDP 协议的格式4. UDP 的缓冲区基于UDP的应用层协议 1. UDP 协议 UDP (User Datagram Protocol) 是一种面向数据报的传输层协议, 是传输层的重要协议之一; UDP协议提供了一种无连接, 不可靠的数据传输服务; 适用于要求源主机以恒定速率…

响应式建站陶瓷企业类公司网站源码系统 带完整的安装代码包以及搭建部署教程

系统概述 响应式建站陶瓷企业类公司网站源码系统是一款专为陶瓷企业设计的网站建设解决方案。该系统采用响应式设计&#xff0c;能够自动适应不同设备的屏幕尺寸&#xff0c;为用户提供一致的浏览体验。无论用户是通过电脑、平板还是手机访问网站&#xff0c;都能获得清晰、美…

html+css 实现3D分层悬停按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

太牛了!恭喜7位毕业急录、评职晋升作者,2天录用,1-8天见刊!

本周投稿推荐 SCI&EI • 4区“水刊”&#xff0c;纯正刊&#xff08;来稿即录&#xff09; • CCF-B类&#xff0c;IEEE一区-Top&#xff08;3天初审&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; 知网&#xff08;CNKI&#xff09;、谷歌学术 …

posthog,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - posthog。 Github地址&#xff1a;https://github.com/PostHog/posthog 在现代数据驱动的开发过程中&#xff0c;了解用户行为和应用性能是至关重要的…

this关键字的简明指南与理解

this关键字是执行上下文中的一个属性&#xff0c;它主要用在函数内部&#xff0c;指向最后一次调用该函数的对象。然而&#xff0c;this 的值并不是在函数定义时确定的&#xff0c;而是在函数被调用时根据函数的调用方式动态绑定的。以下是对 this 的一些相关理解。 一、this的…

Scrapy 爬取旅游景点相关数据(七):利用指纹实现“不重复爬取”

本期学习&#xff1a; 利用网页指纹去重 众所周知&#xff0c;代理是要花钱的&#xff0c;那么在爬取&#xff08;测试&#xff09;巨量网页的时候&#xff0c;就不可能对已经爬取过的网站去重复的爬&#xff0c;这样会消耗大量的时间&#xff0c;更重要的是会消耗大量的IP (金…

redis的高可用及性能管理和雪崩

redis的高可用 redis当中&#xff0c;高可用概念更宽泛一些。 除了正常服务以外&#xff0c;数据量的扩容&#xff0c;数据安全。 实现高可用的方式&#xff1a; 1、持久化 最简单的高可用方法&#xff0c;主要功能就是备份数据。 把内存当中的数据保存到硬盘当中。 2、主…

如何有效增加谷歌外链?

想有效增加谷歌外链&#xff0c;其实还是要看你想要哪一种外链&#xff0c;但无论哪一种外链&#xff0c;都不能乱发&#xff0c;想有效的增加谷歌外链&#xff0c;看见明显的数据变化&#xff0c;这里只推荐三种外链&#xff0c;GPB&#xff0c;GNB,GMB 目前市面上最有效的外链…

负载驱动下的滚珠丝杆预压力优化策略!

滚珠丝杆的预紧力是指在未受到负载时&#xff0c;滚珠丝杆轴承内部的压力&#xff0c;主要是为了消除轴向后隙&#xff0c;‌减小轴向力引起的弹性位移&#xff0c;‌从而提高滚珠丝杆的刚度。‌这种预压机制通过独特的滚珠与珠槽接触模式实现&#xff0c;‌旨在增加系统的刚性…