2021.07.17 P4170 染色(区间DP)
作者:互联网
2021.07.17 P4170 染色(区间DP)
[P4170 CQOI2007]涂色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
重点:
1.目标状态可以由哪些状态转移过来。
题目:
每次可以改变一段连续区间的颜色,问最少需要几次可以吧颜色改为目标区间颜色。
分析:
在一段连续区间(l,r)内,如果l,r处颜色相同,则选择(l+1,r)以及(l,r-1)这两个区间内修改次数少的,如果不同,枚举区间内断点,将两个小区间内次数相加。
代码如下:
#include<bits/stdc++.h>
using namespace std;
string a;
int f[55][55];
int main(){
cin>>a;
int n=a.size();
memset(f,0x3f3f3f3f,sizeof(f));
for(int i=1;i<=n;i++)f[i][i]=1;
for(int l=2;l<=n;l++){
for(int i=1;i+l-1<=n;i++){
int end=i+l-1;
if(a[i-1]==a[end-1]){
f[i][end]=min(f[i+1][end],f[i][end-1]);
continue;
}else{
for(int k=i;k<=end;k++){
f[i][end]=min(f[i][end],f[i][k]+f[k+1][end]);
}
}
}
}
cout<<f[1][n];
return 0;
}
标签:颜色,2021.07,17,int,P4170,区间 来源: https://www.cnblogs.com/eleveni/p/15026400.html