蓝桥杯2020年国赛C/C++C组第7题 重复字符串(思维与贪心)

embedded/2025/1/19 23:43:04/

 解题思路:首先明确,若能将S变为一个K次字符串,那么它的长度应该是K的倍数,如果不是,那么就无法将S变为一个K次字符串,直接按题目要求输出-1即可,如果是,就开始遍历(S/K)长度的字符串它的每一个字符,而既然是一个K次字符串,那么这个(S/K)长度的字符串它的每一个字符应该出现K次,而这个字符串每一个字符的修改都是互不影响的,即我们可以通过贪心策略,在每一个字符的K次遍历中,把字符修改成出现最多的那一个字符,那么修改次数即为每一个字符中的最少情况,我们将(S/K)字符串中的所有字符的修改次数进行统计,完成输出即可

#include<stdio.h>
#include<string.h> 
int max(int a,int b)
{return a>=b?a:b;//定义一个返回两者之间较大值的函数
}
int main()
{const int N=1e5+10;char s[N];//定义一个足以满足题目字符串输入长度的字符数组int k;int count[26]={0};//统计a到z的出现次数int sum=0;int i,j; scanf("%d",&k);getchar();//吞掉换行符,防止对后续输入造成影响gets(s);if(strlen(s)%k!=0) printf("-1");//如果字符串S长度不为K的倍数(余数不为0) 输出-1else{int n=strlen(s)/k;//计算拆分成K次后的小字符串的长度for(i=0;i<n;i++)//遍历小字符串的每一个字符{for(j=0;j<26;j++) count[j]=0;//每一次遍历时,将count数组初始化为0,代表a到z还未曾出现int ma=0;//统计出现最多的次数for(j=0;j<k;j++)//把K次出现过的字符全部找出来{char x=s[i+j*n];//把当前遍历的这个字符存储进一个字符变量count[x-'a']++;//这个字符每出现一次,就统计一次ma=max(ma,count[x-'a']);//更新出现最多的字符它的出现次数}sum+=k-ma;//将不是出现的最多的字符都改为出现最多的字符,就完成了每一次的修改最少情况}printf("%d",sum);//遍历完小字符串的所有字符,那么修改次数之和便是整个字符串需要的最小修改次数}                 //完成输出return 0;
}

 

 


http://www.ppmy.cn/embedded/155330.html

相关文章

分布式项目新选择:Dubbo搭建方案

在当今的数字化时代&#xff0c;构建高性能、可扩展的分布式系统已成为众多企业应对业务增长和技术挑战的关键。Dubbo&#xff0c;作为阿里巴巴开源的一款高性能、轻量级的Java RPC框架&#xff0c;为Java开发者提供了一套完善的分布式服务治理方案。本文将详细介绍如何使用Dub…

SSH config

背景 起因就是我发现大部分人对 SSH 只会基本的 ssh userip 的方式登录服务器&#xff0c;至多再会个配置免密&#xff0c;而对 SSH config 几乎不了解。事实上 SSH 可以灵活批量配置服务器信息&#xff0c;配置跳板等等。本文努力普及一些使用细节&#xff0c;希望有一天大家都…

Linux高级--3.3.1 C++ spdlog 开源异步日志方案

一、基本介绍 spdlog 是由 Gustav S. 在 2015 年开发的一个高性能 C 日志库。开发这个库的主要目的是为了提供一个非常快速、轻量、易于使用的日志工具&#xff0c;特别适合需要高性能、低延迟日志记录的 C 应用程序。&#xff08;由于源码现在比较难下载&#xff0c;我把压缩…

opencv对直方图的计算和绘制

【欢迎关注编码小哥&#xff0c;学习更多实用的编程方法和技巧】 1、直方图的计算 cv::calcHist 是 OpenCV 中用于计算图像直方图的函数。它可以处理多通道图像&#xff0c;并通过指定图像、通道、掩膜、直方图大小和范围等参数来生成直方图。 函数原型 void cv::calcHist(…

Android系统开发(一):AOSP 架构全解析:开源拥抱安卓未来

引言 当我们手握智能手机&#xff0c;流畅地滑动屏幕、切换应用、欣赏动画时&#xff0c;背后其实藏着一套庞大且精密的开源系统——Android AOSP&#xff08;Android Open Source Project&#xff09;。这套系统不仅是所有安卓设备的根基&#xff0c;也是系统开发者的终极 pl…

大模型赋能医疗项目,深兰科技与武汉协和医院达成合作

2025年1月15日&#xff0c;以“科技创新&#xff0c;转化赋能&#xff0c;医企向未来”为主题的武汉市首届“卫生健康科技创新大赛优秀成果展示暨颁奖典礼”在光谷科技会展中心隆重举行&#xff0c;活动中&#xff0c;深兰科技武汉公司与华中科技大学同济医学院附属协和医院就构…

MongoDB深度解析与实践案例

MongoDB深度解析与实践案例 在当今大数据与云计算盛行的时代,NoSQL数据库以其灵活的数据模型、水平扩展能力和高性能,成为处理海量数据的重要工具之一。MongoDB,作为NoSQL数据库的杰出代表,凭借其面向文档的存储结构、强大的查询语言以及丰富的生态系统,赢得了众多开发者…

knife4j 文档解析 application/x-www-form-urlencoded表单解析成post json

环境 <spring.boot.version>2.7.18</spring.boot.version> <springdoc.version>1.8.0</springdoc.version> <knife4j.version>4.5.0</knife4j.version> 原因 解决方法 github 上发现有开发者创建了一个 fork&#xff0c;并将这个修复到…