hdu2467 String painter(区间dp)
来源:互联网 发布:录干音用什么软件 编辑:程序博客网 时间:2024/05/22 00:35
hdu2467
分析
费了好大劲才看懂题目,有个刷子刷一段区间,将a串刷成b串。
思路就是先单独对b串以空串为目标进行区间dp,这里初始化 是dp[i][j]=dp[i+1][j]+1;而之后更新的位置则是s2[k]==s2[i]也就是刷子的两端。然后根据dp以及a串进行结果的更新,可以看代码理解。
可以参考这微博主的。http://blog.csdn.net/a601025382s/article/details/12379565
题目
http://acm.hdu.edu.cn/showproblem.php?pid=2476
代码
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;char s1[105],s2[105];int dp[105][105];int ans[105];int main(){ while(scanf("%s%s",s1,s2)!=EOF) { int n=strlen(s1); memset(dp,0,sizeof(dp)); for(int i=0; i<n; i++) dp[i][i]=1; for(int len=2; len<=n; len++) { for(int i=0; i+len-1<n; i++) { int j=i+len-1; dp[i][j]=dp[i+1][j]+1; for(int k=i+1; k<=j; k++) { if(s2[k]==s2[i]) dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]); } } } for(int i=0; i<n; i++) ans[i]=dp[0][i]; for(int i=0; i<n; i++) { if(s1[i]==s2[i]) { if(i==0) ans[i]=0; else ans[i]=ans[i-1]; } else { for(int j=0; j<i; j++) ans[i]=min(ans[i],ans[j]+dp[j+1][i]); } } printf("%d\n",ans[n-1]); } return 0;}
0 0
- hdu2467 String painter(区间dp)
- [区间dp]Hdu2467 String painter
- Hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间DP)
- 【HDU 2476】String Painter(区间DP)
- hdu2476 String painter(区间dp)
- hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间dp)
- HDU 2476 String painter(区间DP)
- hdu 2476 String painter(区间DP)
- HDU 2476 String painter(区间DP)
- hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间DP)
- HDU 2476 String painter(区间DP)
- HDU 2476 String painter(区间dp)
- HDU 2476 String painter (区间DP)
- hdu2476 String painter (区间DP)
- HDU 2476 String painter(区间DP)
- 类的实例和实例的成员变量的销毁
- linux命令学习
- 封装使用ViewHolder模式的Adapter组件,及用其快速实现聊天界面
- [Python入门]Chapter8 字符串
- Swift - 点击输入框外部屏幕关闭虚拟键盘
- hdu2467 String painter(区间dp)
- swift基本语法(总结提炼版)之007 swift之数组
- SUSE Linux上安装IPython/Jupyter
- leetcode Partition List二分链表问题
- oracle体系结构-进程结构 概述
- leetcode:Recover Binary Search Tree
- C#Winform读取txt文件
- Python操作Mysql实例代码 - 以及mysqldb 安装
- 毕业设计第九天