【每日一题】涂色PAINT

[CQOI2007]涂色PAINT

https://ac.nowcoder.com/acm/problem/19909

题目

有一条长度为 的木板,初始时没有涂过任何颜色。
给定一个长度为 的字符串 ,由 R、G、B 这 3 种字符组成,分别表示红、绿、蓝这 3 种颜色。
每次可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。
求最少需要涂色多少次?

例如,给定字符串:RGBGR。第一次把木版涂成 RRRRR,第二次涂成 RGGGR,第三次涂成 RGBGR,达到目标。

解题思路

动态规划:

表示将第 块到第 块木板涂成给定颜色,需要涂色的最少次数。

  • 时,
  • 时,如果
    如果

根据状态转移方程,外循环从右到左遍历
最终结果返回

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main(){
    string s;
    cin >> s;
    const int inf = 0x3f3f3f3f;
    int n = s.size();
    vector<vector<int>> dp(n, vector<int>(n, inf));
    for(int i=0; i<n; ++i)
        dp[i][i] = 1;
    for(int i=n-1; i>=0; --i){
        for(int j=i+1; j<n; ++j){
            if(s[i]==s[j]){
                dp[i][j] = min(dp[i+1][j], 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] << endl;
    return 0;
}
全部评论

相关推荐

xtu大迫杰:偶遇校友,祝校友offer打牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24476次浏览 480人参与
# 中国电信笔试 #
31011次浏览 283人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14048次浏览 209人参与
# 你的实习产出是真实的还是包装的? #
18635次浏览 329人参与
# 如果秋招能重来,我会____ #
96616次浏览 500人参与
# 春招至今,你的战绩如何? #
59439次浏览 535人参与
# 米连集团26产品管培生项目 #
12919次浏览 285人参与
# i人适合做什么工作 #
36838次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79444次浏览 219人参与
# 哪些公司真双非友好? #
69176次浏览 287人参与
# 找AI工作可以去哪些公司? #
7561次浏览 179人参与
# 从事AI岗需要掌握哪些技术栈? #
7528次浏览 238人参与
# 面试尴尬现场 #
220729次浏览 861人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339792次浏览 2163人参与
# 五一之后,实习真的很难找吗? #
102792次浏览 584人参与
# 金三银四,你的春招进行到哪个阶段了? #
21492次浏览 275人参与
# 你做过最难的笔试是哪家公司 #
29736次浏览 182人参与
# 你小时候最想从事什么职业 #
159832次浏览 2072人参与
# 阿里笔试 #
176137次浏览 1300人参与
# 应届生第一份工资要多少合适 #
20463次浏览 84人参与
# 一张图晒出你司的标语 #
3784次浏览 71人参与
# 面试被问期望薪资时该如何回答 #
382445次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务