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

题目描述

思路

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

代码

统计每个位置上出现的次数(因为修改是修改成重复的字符串,即abcebf,要想修改成2个重复的,即abcabc , 每个位置上要对应)

要读题!!如果不能整除!要输出-1!!!!!!!!!!不要看一半!

cpp 复制代码
#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可以混分!!

相关推荐
小程故事多_808 小时前
从A2C、TRPO、PPO到GRPO,强化学习策略梯度算法完整演进与大模型落地实战解析
人工智能·算法
2601_956121979 小时前
二分算法(知识点+题目)
c++·算法
AndrewHZ12 小时前
【LLM技术全景】阶段总结:技术原理篇核心知识回顾
人工智能·深度学习·算法·语言模型·大模型·llm·芯片开发
小星星闪亮登场13 小时前
2026萌新联赛第三场-- (郑州轻工业大学)
数据结构·c++·经验分享·算法·贪心算法·排序算法·深度优先
冻柠檬飞冰走茶13 小时前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
玖玥拾14 小时前
LeetCode 88 合并两个有序数组
算法·leetcode
数据皮皮侠AI14 小时前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
小程故事多_8014 小时前
用GRPO算法重塑多智能体系统,从原理落地到复杂任务规划实战
人工智能·算法
Hi李耶15 小时前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_15 小时前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度