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

蓝桥杯 3. 涂色

题目描述

假设你有一条长度为 5 的木板,初始时没有涂过任何颜色。你希望把它的 5 个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为 5 的字符串表示这个目标:RGBGR

每次你可以把一段连续的木板涂成一个给定的颜色,后涂的颜色会覆盖先涂的颜色。

例如:

  • 第一次把木板涂成 RRRRR
  • 第二次涂成 RGGGR
  • 第三次涂成 RGBGR,达到目标

请你计算用尽量少的涂色次数达到目标。


输入描述

输入仅一行,包含一个长度为 n 的字符串,即涂色目标。字符串中的每个字符都是一个大写字母,不同的字母代表不同颜色,相同的字母代表相同颜色。

  • 1 ≤ n ≤ 50

输出描述

输出仅一行,包含一个整数,即最少的涂色次数。


输入输出样例

示例 1

输入
AAAAA
输出
1

c++代码

#include<bits/stdc++.h>using namespace std;string str;
int n;
vector<vector<int>> dp;int main() {cin >> str;n = str.size();dp = vector<vector<int>>(n, vector<int>(n, INT_MAX));for (int len = 1; len <= n; len++) {for (int i = 0; i + len - 1 < n; i++) {int j = i + len - 1;if (i == j) dp[i][j] = 1;else if (str[i] == str[j]) {int a = INT_MAX, b = INT_MAX;if (i + 1 < n) a = dp[i + 1][j];if (j - 1 >= 0) b = dp[i][j - 1];dp[i][j] = min(a, b);if (dp[i][j] == INT_MAX) dp[i][j] = 1;}else {for (int k = i; k < j; k++) {dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j]);}}}}cout << dp[0][n - 1];return 0;
}//by wqs
http://www.xdnf.cn/news/8072.html

相关文章:

  • OceanBase数据库全面指南(基础入门篇)
  • C# 实现轻量化数据库SQLite在工业中上的应用
  • TensorFlow深度学习实战(17)——主成分分析详解
  • 鞋服行业数据防泄露——企业解决方案
  • NFS服务器实验
  • 深入了解linux系统—— 文件系统
  • 物联网、云计算技术加持,助推楼宇自控系统实现智能高效管理
  • 机器学习与深度学习算法:从决策树到 GAN 的原理与 PyTorch 实现
  • 数智读书笔记系列033《软件设计的哲学(第2版)》:复杂性管理的艺术
  • Qt C++图书管理系统
  • 在Linux debian12系统上使用go语言以及excelize库处理excel数据
  • CQF预备知识:一、微积分 —— 1.2.2 函数f(x)的类型详解
  • 【力扣题目分享】二叉树专题(C++)
  • Spring开发系统时如何实现上传和下载文件
  • Java转Go日记(五十四):gin路由
  • P1833 樱花
  • 端口号详解(技术向)
  • Java之函数式接口、lambda表达式、stream流操作、Optional容器、方法引用
  • 企业级调度器LVS
  • Java读写分离实战
  • Java SpringBoot 项目中 Redis 存储 Session 具体实现步骤
  • Java阻塞队列(BlockingQueue)的使用:ArrayBlockingQueue类、LinkedBlockingQueue类
  • JVM参数详解与实战案例指南(AI)
  • BurpSuite学习安装
  • MobaXterm 解除只能保存14个session会话限制
  • 篇章十 消息持久化(二)
  • 加密软件对企业安全的帮助
  • 水浒后传-暹罗国建立新国家的故事
  • 影刀Fun叉鸟-2048
  • 【强化学习】PPO如何根据奖励模型调整模型参数