区间dp,两个str一起考虑很难转移。

看了别人题解以后才知道是做两次dp。

dp1。str1最坏情况下和str2完全不相同,相当于从空白串开始刷。

对于一个区间,有两种刷法,一起刷,或者分开来刷。

规定[i][i-1]为空串,这样一起刷可以归结为第二种情况。

合并的时候,大的区间的次数<=小的区间的,和新加入区间的字符有关。

小的区间是一个字符一个字符的变成大区间的。

所以每次考虑新加入区间的尾部字符j,枚举k划分区间[i][k-1],[k][j]。

要使得刷的次数减少,只有尽量一起刷。比如aba,aa,abcda。

当s[k] == s[j]的时候可以先刷一遍[i,j]然后刷中间,等效于dp[k][j-1]。

dp2。得出最坏的情况以后。dp2[i]表示以i结尾的子串的最优解。

然后考虑结尾s[i]和t[i]的关系。

#include<bits/stdc++.h>
using namespace std; const int LEN = ;
char s[LEN], t[LEN]; int dp[LEN][LEN];
int dp2[LEN]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
while(gets(s)){
gets(t);
int len = strlen(t); for(int d = ; d < len; d++){
for(int i = ; i <= len; i++){
int j = i+d; //每次只考虑新加入区间的j
dp[i][j] = dp[i][j-] + ; //单刷
for(int k = i; k < j; k++){//划分区间,[i,k-1] [k,j]分开来刷 [i][i-1]表示为空
if(t[k-] == t[j-]){ // dp[i][j-1] <= dp[i][k-1]+dp[k][j-1],所以只有t[k-1] == t[j-1]才可能有更优的解
dp[i][j] = min(dp[i][j],dp[i][k-]+dp[k][j-]);
}
}
}
}
for(int i = ; i <= len; i++){
if(s[i-] == t[i-]) dp2[i] = dp2[i-]; //新的这个可以不刷
else { //不等则划分
dp2[i] = i;
for(int k = ; k < i; k++){
dp2[i] = min(dp2[i],dp2[k]+dp[k+][i]);
}
}
}
printf("%d\n",dp2[len]);
}
return ;
}

最新文章

  1. svn1.6在centos6下的使用
  2. bootstrap的一些资源
  3. 加载不同的nib文件
  4. JavaScript模块化开发一瞥
  5. 非常详细的 Docker 学习笔记
  6. 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
  7. 转: JavaScript函数式编程(二)
  8. 用微软makecert.exe生成一个自签名的证书
  9. java程序设计 彩票购买抽奖程序 团队博客
  10. 优化TestNG测试报告
  11. CCF CSP 201609-2 火车购票
  12. EasyPR源码剖析(2):车牌定位
  13. RabbitMQ系列教程之三:发布/订阅(Publish/Subscribe)(转载)
  14. BZOJ4065 : [Cerc2012]Graphic Madness
  15. 2013杭州网赛 1001 hdu 4738 Caocao&#39;s Bridges(双连通分量割边/桥)
  16. ASP.NET中高级程序员 面试题
  17. 新团建立时间 timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  18. 1517 u Calculate e
  19. [转]javascript之数组操作
  20. statusbar的颜色设置

热门文章

  1. 在xcode中设置include和lib路径
  2. cogs 2123. [HZOI 2015] Glass Beads
  3. [Xcode 实际操作]四、常用控件-(15)MKMapView加载简单视图
  4. java socket 网络通信 指定端口的监听 多线程 乱码
  5. POJ1321-棋盘问题
  6. AT2160 へんなコンパス / Manhattan Compass
  7. Exadata中Infiniband交换机升级
  8. 实现网上大神的asp.net mvc + ef +easyui
  9. 浅谈关于SRAM与DRAM的区别
  10. MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务?