String painter
来源:互联网 发布:smtp服务器 端口 编辑:程序博客网 时间:2024/05/17 22:07
题意:
将第一个串转变为第二个串所需的最少步数
思路:
由于可以取任意的段变成相同的字符,所以当遇到原串与目标不同时取目标的上一个与当前相同的字符将整个区间变为当前字符,操作加一,然后将中间这一场串进行处理的到最小操作数(相同处理方式,切割成相同位置前与相同位置与结尾之间,然后第二个的m改为str2[end])
关键是直接操作目标串,凡是目标串有重复的字符,前这里面所有的字符与原串不同的就特别考虑同一变动一次,如此思想一直得到最少变动
代码:
#include<cstdio>#include<string>#include<algorithm>#include<cstring>using namespace std;const int INF = 0x3f3f3f3f;char str1[105], str2[105];const int maxn = 105;int cnt[maxn], d[maxn][maxn][30];int dp(int sta, int end, char m) {if(d[sta][end][m-'a'] != -1) return d[sta][end][m-'a'];if(sta>end) return 0;if(sta==end) return (m == str2[sta]?0:1);if(str2[end] == m) return dp(sta, end-1, m);int ans = INF; for(int i = end; i >= sta; i--) { if(str2[i] == str2[end]) ans = min(ans, dp(sta, i-1, m)+dp(i, end, str2[end])+1); } return d[sta][end][m-'a'] = ans;} int main() {while(scanf("%s", str1) != EOF) {scanf("%s", str2);memset(d, -1, sizeof(d));int len = strlen(str1);cnt[0] = (str1[0]==str2[0]?0:1);for(int i=0; i<len; i++) {if(str1[i] == str2[i]) {cnt[i] = cnt[i-1];}else {cnt[i] = INF;for(int j=i; j>=0; j--) {if(str2[j] == str2[i] && str1[j] != str2[j]) {cnt[i] = min(cnt[i], dp(j+1, i-1, str2[i])+1+(j>0?cnt[j-1]:0));}}}}printf("%d\n", cnt[len-1]);}return 0;}
0 0
- String painter
- String painter
- String painter
- hdoj 2476 String painter
- HDU2476(String painter)DP
- String Painter LA4394
- [UVALive4394]String Painter
- UVALive 4394 String painter
- UVALive 4394 String painter
- HDU - 2476 String painter
- HDU 2476 String painter
- hdu 2476 String painter
- hdu2476 String painter
- uva1437 String painter
- Sicily 1911. String painter
- 【HDU2476】【String painter】
- hdu2476 String painter
- LA 4394 String painter
- PCIE配置失败,提示 pci 0000:01:00.0: BAR 4: no space for [mem size 0x00200000]
- web后端开发资源
- 内存溢出 出现原因及解决方案
- Who Am I & My Friends
- 各种有用的东西、黑科技、技巧
- String painter
- poj 3252 Round Numbers 数位dp
- Mac远程桌面链接ECS Windows2012提示"远程桌面连接无法验证您希望连接的计算机的身份"
- 蓝桥杯 算法训练 图形显示
- Android垂直同步信号VSync的产生及传播结构详解
- crypt密码加密函数的基本用法
- const在c中的用法
- 在金融公司做 IT 是什么感觉?
- Struts2的异常处理机制