当前位置: 首页 > news >正文

P8739 [蓝桥杯 2020 国 C] 重复字符串

题目描述

在这里插入图片描述

思路

这个和翻硬币的那个题很像,不过翻硬币只有翻或不翻,二元状态,但这个修改,可以修改成任何数,因为我们想要令修改次数最少,即某个位置上的某个字母出现的最多(看代码理解),那我们就把其余不是他的都改成最多的,这样就是修改最少了

代码

统计每个位置上出现的次数(因为修改是修改成重复的字符串,即abcebf,要想修改成2个重复的,即abcabc , 每个位置上要对应)
要读题!!如果不能整除!要输出-1!!!!!!!!!!不要看一半!

#include<bits/stdc++.h>

using namespace std;

const int N = 1e5+10;

char s[N];
int cnt[N];
int main()
{
	int n;
	cin >> n;
	cin >> s;
	
	int len = strlen(s);  //求长度
	if(len % n != 0)
	{
		cout<<"-1"<<endl;
		return 0;
	}
	int k = len / n;//每个划分后的字符串长度
	//如何统计每个位置的字符串出现的次数?
	//代码能力
	int maxx = 0;
	int ans = 0;
	for(int i = 0; i < k; i++)
	{
		maxx = 0;
		memset(cnt, 0, sizeof cnt); //别忘了对cnt数组初始化
		for(int j = 0; j < n; j++)
		{
			cnt[s[i+k * j] - 'a']++; //统计每个位置的,有点难想,不过可以记下来
			maxx = max(maxx, cnt[s[i+k * j] - 'a']); //直接比较了,也不用再遍历一遍了
		}
		ans += n - maxx;
	}
	cout<<ans<<endl;
	return 0;
}

总结

认真读题!!
有时候不满足输出-1可以混分!!

相关文章:

  • Java习题:合并两个有序数组
  • 蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效
  • 巧记英语四级单词 Unit3-下【晓艳老师版】
  • HCIP-17 BGP基础2
  • 一文介绍阿里32B推理模型
  • 【软件测试】人工智能增强Web 自动化测试框架方案
  • C++ 入门四:类与对象 —— 面向对象编程的核心基石
  • 使用Mybatis时在XML中SQL高亮显示的方法
  • CExercise_10_2动态内存分配_1从键盘输入输入中读取一个整数n,动态分配一个长度为n的整型数组。
  • gcd之和
  • OpenCV 伪彩色处理
  • Linux 系统管理常用命令
  • RV1126 实现简单的UI方案
  • 【C++进阶】关联容器:multiset类型
  • Python代码解释
  • OpenCV 图形API(26)图像滤波-----方框滤波函数boxFilter()
  • SpringBoot系列之集成Redisson实现布隆过滤器
  • FastAPI全面指南:从入门到企业级应用实战
  • Java并发编程:深入解析原子操作类与CAS原理
  • SSH配置优化:提升本地内网Linux服务器远程连接速度与稳定性
  • 国外网站怎么建设/卡一卡二卡三入口2021
  • 域名租赁网站/郑州百度seo关键词
  • 设计页面跳转/seo对网络推广的作用是
  • 平台网站如何做推广方案设计/百度sem竞价
  • vi设计百度百科/百度seo关键词优化软件
  • 云南旅游网站建设/网赌怎么推广拉客户