题解 | #[CQOI2007]涂色PAINT#

[CQOI2007]涂色PAINT

https://www.nowcoder.com/practice/512619bee5874e85bd2812a0c9066125

package main

import (
	"fmt"
)

const INF = 100

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func main() {
	var str string
	var dp [55][55]int
	fmt.Scan(&str)
	lens := len(str)
	str = " " + str
	for i := 0; i <= lens+2; i++ {
		for j := 0; j <= lens+2; j++ {
			dp[i][j] = INF
			dp[i][j] = INF
		}
	}
	for i := lens; i > 0; i-- {
		dp[i][i] = 1
		for j := i + 1; j <= lens; j++ {
			if str[i] == str[i+1] {
				dp[i][j] = min(dp[i][j], dp[i+1][j])
			}
			if str[i] == str[j] {
				dp[i][j] = min(dp[i][j], dp[i+1][j])
			}
			if str[j] == str[i] {
				dp[i][j] = min(dp[i][j], dp[i][j-1])
			}
			if str[j] == str[j-1] {
				dp[i][j] = min(dp[i][j], dp[i][j-1])
			}
            for k := i;  k < j; k++{
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j])
            }
		}
	}
    fmt.Println(dp[1][lens])
}

全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务